diff options
author | aky <aky@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2011-06-29 21:59:17 +0000 |
---|---|---|
committer | aky <aky@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2011-06-29 21:59:17 +0000 |
commit | 9fe8f5549f60e7cd8fd64b2c914774af228a2704 (patch) | |
tree | 1d9912532545bddc8f7dcf30b4d814b14d2e556c | |
parent | bb397f18a2ce5b3fe6d2b00f636f4a3dedb39031 (diff) | |
download | ATCD-9fe8f5549f60e7cd8fd64b2c914774af228a2704.tar.gz |
Wed Jun 29 21:56:17 UTC 2011 Akshay V. Dabholkar <aky@dre.vanderbilt.edu>
28 files changed, 1080 insertions, 8 deletions
diff --git a/CIAO/ChangeLog b/CIAO/ChangeLog index 05b806cd125..3236ffeb1b4 100644 --- a/CIAO/ChangeLog +++ b/CIAO/ChangeLog @@ -1,3 +1,45 @@ +Wed Jun 29 21:56:17 UTC 2011 Akshay V. Dabholkar <aky@dre.vanderbilt.edu> + + * MPC/config/ccm_generic_stub.mpb: + * MPC/config/ciao_generic_container.mpb: + * MPC/config/ciao_generic_container_stub.mpb: + + * ccm/Generic: + + * ccm/Generic/CCM_ClientContainerInterceptor.idl: + * ccm/Generic/CCM_ClientContainerInterceptorRegistration.idl: + * ccm/Generic/CCM_ContainerClientRequestInfo.idl: + * ccm/Generic/CCM_ContainerInterceptor.idl: + * ccm/Generic/CCM_ContainerRequestInfo.idl: + * ccm/Generic/CCM_ContainerServantRequestInfo.idl: + * ccm/Generic/CCM_ContainerServerRequestInfo.idl: + * ccm/Generic/CCM_ContainerStubRequestInfo.idl: + * ccm/Generic/CCM_Generic.mpc: + * ccm/Generic/CCM_GenericComponent.idl: + * ccm/Generic/CCM_GenericContext.idl: + * ccm/Generic/CCM_InvalidRegistration.idl: + * ccm/Generic/CCM_QoS.idl: + * ccm/Generic/CCM_ServantContainerInterceptor.idl: + * ccm/Generic/CCM_ServantContainerInterceptorRegistration.idl: + * ccm/Generic/CCM_ServerContainerInterceptor.idl: + * ccm/Generic/CCM_ServerContainerInterceptorRegistration.idl: + * ccm/Generic/CCM_StubContainerInterceptor.idl: + * ccm/Generic/CCM_StubContainerInterceptorRegistration.idl: + + * ciao/Containers/Generic/Generic_Container.mpc: + + * ciao/Contexts/Generic: + + * ciao/Contexts/Generic/Generic_Context_T.h: + * ciao/Contexts/Generic/Generic_Context_T.cpp: + + * ciao/Servants/Generic: + + * ciao/Servants/Generic/Servant_Impl_T.h: + * ciao/Servants/Generic/Servant_Impl_T.cpp: + + Fixed Compilations issues + Wed Jun 29 19:19:02 UTC 2011 Akshay V. Dabholkar <aky@dre.vanderbilt.edu> * MPC/config/ccm_generic_stub.mpb: diff --git a/CIAO/MPC/config/ccm_generic_stub.mpb b/CIAO/MPC/config/ccm_generic_stub.mpb index 08ebb3deb5d..273da72c805 100644 --- a/CIAO/MPC/config/ccm_generic_stub.mpb +++ b/CIAO/MPC/config/ccm_generic_stub.mpb @@ -2,6 +2,6 @@ // $Id$ project : ccm_stub { - after += CCM_lem_stub CCM_extension_stub - libs += CCM_lem_stub CCM_extension_stub + after += CCM_lem_stub CCM_generic_stub + libs += CCM_lem_stub CCM_generic_stub } diff --git a/CIAO/MPC/config/ciao_generic_container.mpb b/CIAO/MPC/config/ciao_generic_container.mpb index 9deacd8a8b0..9d41c40d025 100644 --- a/CIAO/MPC/config/ciao_generic_container.mpb +++ b/CIAO/MPC/config/ciao_generic_container.mpb @@ -3,7 +3,7 @@ project : utils, ciao_servant, \ ciao_port_activator_stub, ciao_servant_activator_stub, \ - ciao_extension_container_stub { - libs += CIAO_Extension_Container - after += CIAO_Extension_Container + ciao_generic_container_stub { + libs += CIAO_Generic_Container + after += CIAO_Generic_Container } diff --git a/CIAO/MPC/config/ciao_generic_container_stub.mpb b/CIAO/MPC/config/ciao_generic_container_stub.mpb index 28b1fa64649..bb4455fe923 100644 --- a/CIAO/MPC/config/ciao_generic_container_stub.mpb +++ b/CIAO/MPC/config/ciao_generic_container_stub.mpb @@ -2,6 +2,6 @@ // $Id$ project : ciao_port_activator_stub, ciao_servant_activator_stub, ciao_container_base_stub { - libs += CIAO_Extension_Container_stub - after += CIAO_Extension_Container_stub + libs += CIAO_Generic_Container_stub + after += CIAO_Generic_Container_stub } diff --git a/CIAO/ccm/Generic/CCM_ClientContainerInterceptor.idl b/CIAO/ccm/Generic/CCM_ClientContainerInterceptor.idl new file mode 100644 index 00000000000..8ea6e34ad28 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ClientContainerInterceptor.idl @@ -0,0 +1,27 @@ +// $Id$ + +#if !defined (CCM_CLIENTCONTAINERINTERCEPTOR_IDL) +#define CCM_CLIENTCONTAINERINTERCEPTOR_IDL + +#include "ccm/Generic/CCM_ContainerInterceptor.idl" +#include "ccm/Generic/CCM_ContainerClientRequestInfo.idl" +#include "tao/PI/PIForwardRequest.pidl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ClientContainerInterceptor : ContainerInterceptor + { + void send_request (in ContainerClientRequestInfo info) + raises (PortableInterceptor::ForwardRequest); + void send_poll (in ContainerClientRequestInfo info); + void receive_reply (in ContainerClientRequestInfo info); + void receive_exception (in ContainerClientRequestInfo info) + raises (PortableInterceptor::ForwardRequest); + void receive_other (in ContainerClientRequestInfo info) + raises (PortableInterceptor::ForwardRequest); + }; + }; +}; +#endif /* CCM_CLIENTCONTAINERINTERCEPTOR_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ClientContainerInterceptorRegistration.idl b/CIAO/ccm/Generic/CCM_ClientContainerInterceptorRegistration.idl new file mode 100644 index 00000000000..f4d2f6e8bf1 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ClientContainerInterceptorRegistration.idl @@ -0,0 +1,24 @@ +// $Id$ + +#if !defined (CCM_CLIENTCONTAINERINTERCEPTORREGISTRATION_IDL) +#define CCM_CLIENTCONTAINERINTERCEPTORREGISTRATION_IDL + +#include "ccm/CCM_Cookie.idl" +#include "ccm/Generic/CCM_InvalidRegistration.idl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ClientContainerInterceptor; + + local interface ClientContainerInterceptorRegistration + { + Components::Cookie register_client_interceptor (in ClientContainerInterceptor ci); + ClientContainerInterceptor unregister_client_interceptor (in Components::Cookie cookie) + raises(InvalidRegistration); + }; + }; +}; + +#endif /* CCM_CLIENTCONTAINERINTERCEPTORREGISTRATION_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ContainerClientRequestInfo.idl b/CIAO/ccm/Generic/CCM_ContainerClientRequestInfo.idl new file mode 100644 index 00000000000..7b677410e1a --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ContainerClientRequestInfo.idl @@ -0,0 +1,20 @@ +// $Id$ + +#if !defined (CCM_CONTAINERCLIENTREQUESTINFO_IDL) +#define CCM_CONTAINERCLIENTREQUESTINFO_IDL + +#include "ccm/Generic/CCM_ContainerRequestInfo.idl" +#include "tao/PI/PI_include.pidl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ContainerClientRequestInfo : ContainerRequestInfo + { + PortableInterceptor::ClientRequestInfo request_info(); + }; + }; +}; + +#endif /* CCM_CONTAINERCLIENTREQUESTINFO_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ContainerInterceptor.idl b/CIAO/ccm/Generic/CCM_ContainerInterceptor.idl new file mode 100644 index 00000000000..eb93d525423 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ContainerInterceptor.idl @@ -0,0 +1,24 @@ +// $Id$ + +#if !defined (CCM_CONTAINERPORTABLEINTERCEPTOR_IDL) +#define CCM_CONTAINERPORTABLEINTERCEPTOR_IDL + +#include "tao/PI_Forward.pidl" + +module Components { + + module ContainerPortableInterceptor { + + local interface ContainerInterceptor + { + readonly attribute string name; + + attribute unsigned short priority; + + void destroy (); + void set_slot_id(in PortableInterceptor::SlotId slot_id); + }; + }; +}; + +#endif /* CCM_CONTAINERPORTABLEINTERCEPTOR_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ContainerRequestInfo.idl b/CIAO/ccm/Generic/CCM_ContainerRequestInfo.idl new file mode 100644 index 00000000000..e999c3153af --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ContainerRequestInfo.idl @@ -0,0 +1,22 @@ +// $Id$ + +#if !defined (CCM_CONTAINERREQUESTINFO_IDL) +#define CCM_CONTAINERREQUESTINFO_IDL + +#include "ccm/CCM_Navigation.idl" +#include "tao/OctetSeq.pidl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ContainerRequestInfo + { + readonly attribute CORBA::OctetSeq origin_id; + readonly attribute CORBA::OctetSeq target_id; + readonly attribute FeatureName name; + }; + }; +}; + +#endif /* CCM_CONTAINERREQUESTINFO_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ContainerServantRequestInfo.idl b/CIAO/ccm/Generic/CCM_ContainerServantRequestInfo.idl new file mode 100644 index 00000000000..527d1d929dd --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ContainerServantRequestInfo.idl @@ -0,0 +1,25 @@ +// $Id$ + +#if !defined (CCM_CONTAINERSERVANTREQUESTINFO_IDL) +#define CCM_CONTAINERSERVANTREQUESTINFO_IDL + +#include "ccm/Generic/CCM_ContainerRequestInfo.idl" +#include "ccm/CCM_EnterpriseComponent.idl" +#include "tao/AnyTypeCode/Dynamic.pidl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ContainerServantRequestInfo : ContainerRequestInfo + { + attribute Dynamic::ParameterList arguments; + readonly attribute string operation; + attribute any result; + attribute Components::EnterpriseComponent target; + attribute any the_exception; + }; + }; +}; + +#endif /* CCM_CONTAINERSERVANTREQUESTINFO_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ContainerServerRequestInfo.idl b/CIAO/ccm/Generic/CCM_ContainerServerRequestInfo.idl new file mode 100644 index 00000000000..b8ff0257c3c --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ContainerServerRequestInfo.idl @@ -0,0 +1,20 @@ +// $Id$ + +#if !defined (CCM_CONTAINERSERVERREQUESTINFO_IDL) +#define CCM_CONTAINERSERVERREQUESTINFO_IDL + +#include "ccm/Generic/CCM_ContainerRequestInfo.idl" +#include "tao/PI_Server/ServerRequestInfo.pidl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ContainerServerRequestInfo : ContainerRequestInfo + { + PortableInterceptor::ServerRequestInfo request_info(); + }; + }; +}; + +#endif /* CCM_CONTAINERSERVERREQUESTINFO_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ContainerStubRequestInfo.idl b/CIAO/ccm/Generic/CCM_ContainerStubRequestInfo.idl new file mode 100644 index 00000000000..d23c610bda6 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ContainerStubRequestInfo.idl @@ -0,0 +1,24 @@ +// $Id$ + +#if !defined (CCM_CONTAINERSTUBREQUESTINFO_IDL) +#define CCM_CONTAINERSTUBREQUESTINFO_IDL + +#include "ccm/Generic/CCM_ContainerRequestInfo.idl" +#include "tao/AnyTypeCode/Dynamic.pidl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ContainerStubRequestInfo : ContainerRequestInfo + { + attribute Dynamic::ParameterList arguments; + readonly attribute string operation; + attribute any result; + attribute Object target; + attribute any the_exception; + }; + }; +}; + +#endif /* CCM_CONTAINERSTUBREQUESTINFO_IDL */ diff --git a/CIAO/ccm/Generic/CCM_Generic.mpc b/CIAO/ccm/Generic/CCM_Generic.mpc new file mode 100644 index 00000000000..8c2871edd97 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_Generic.mpc @@ -0,0 +1,122 @@ +// $Id$ + +project(CCM_generic_stub_idl) : install, ciaolib_with_idl { + idlflags += -Wb,stub_export_include=CCM_Generic_Stub_Export.h \ + -Wb,stub_export_macro=CCM_GENERIC_STUB_Export \ + -Wb,skel_export_include=CCM_Generic_Skel_Export.h \ + -Wb,skel_export_macro=CCM_GENERIC_SKEL_Export + custom_only = 1 + + IDL_Files { + idlflags += -Gxhst -Gxhsk -SS -Sci + CCM_GenericContext.idl + } + + IDL_Files { + idlflags += -SS -Sci + CCM_ClientContainerInterceptorRegistration.idl + CCM_ClientContainerInterceptor.idl + CCM_ContainerInterceptor.idl + CCM_ContainerServerRequestInfo.idl + CCM_ServantContainerInterceptor.idl + CCM_ServerContainerInterceptorRegistration.idl + CCM_ContainerRequestInfo.idl + CCM_ContainerStubRequestInfo.idl + CCM_InvalidRegistration.idl + CCM_ServantContainerInterceptorRegistration.idl + CCM_StubContainerInterceptor.idl + CCM_ContainerClientRequestInfo.idl + CCM_ContainerServantRequestInfo.idl + CCM_GenericComponent.idl + CCM_ServerContainerInterceptor.idl + CCM_StubContainerInterceptorRegistration.idl + } + + IDL_Files { + idlflags += -Ssi + CCM_QoS.idl + } + + specific { + install_dir = ccm/Generic + } +} + +project(CCM_generic_stub) : install, ciaolib_with_idl, ciao_output, ccm_lem_stub, pi_server { + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + dynamicflags += CCM_GENERIC_STUB_BUILD_DLL + after += CCM_generic_stub_idl CCM_lem_stub + libs += CCM_lem_stub + IDL_Files { + } + + Header_Files { + CCM_Generic_Stub_Export.h + CCM_ClientContainerInterceptorC.h + CCM_ContainerInterceptorC.h + CCM_ContainerServerRequestInfoC.h + CCM_GenericContextC.h + CCM_ServantContainerInterceptorC.h + CCM_ServerContainerInterceptorRegistrationC.h + CCM_ClientContainerInterceptorRegistrationC.h + CCM_ContainerRequestInfoC.h + CCM_ContainerStubRequestInfoC.h + CCM_InvalidRegistrationC.h + CCM_ServantContainerInterceptorRegistrationC.h + CCM_StubContainerInterceptorC.h + CCM_ContainerClientRequestInfoC.h + CCM_ContainerServantRequestInfoC.h + CCM_GenericComponentC.h + CCM_QoSC.h + CCM_ServerContainerInterceptorC.h + CCM_StubContainerInterceptorRegistrationC.h + } + + Inline_Files { + CCM_QoSC.inl + } + + Source_Files { + CCM_ClientContainerInterceptorC.cpp + CCM_ContainerInterceptorC.cpp + CCM_ContainerServerRequestInfoC.cpp + CCM_GenericContextC.cpp + CCM_ServantContainerInterceptorC.cpp + CCM_ServerContainerInterceptorRegistrationC.cpp + CCM_ClientContainerInterceptorRegistrationC.cpp + CCM_ContainerRequestInfoC.cpp + CCM_ContainerStubRequestInfoC.cpp + CCM_InvalidRegistrationC.cpp + CCM_ServantContainerInterceptorRegistrationC.cpp + CCM_StubContainerInterceptorC.cpp + CCM_ContainerClientRequestInfoC.cpp + CCM_ContainerServantRequestInfoC.cpp + CCM_GenericComponentC.cpp + CCM_QoSC.cpp + CCM_ServerContainerInterceptorC.cpp + CCM_StubContainerInterceptorRegistrationC.cpp + } + + specific { + install_dir = ccm/Generic + } +} + +project(CCM_generic_skel) : install, ciaolib_with_idl, ciao_output, valuetype, ifr_client, ccm_lem_stub, ccm_generic_stub, portableserver { + // This is necessary for MPC to pull in rules.ciao.GNU + includes += $(CIAO_ROOT) + dynamicflags += CCM_GENERIC_SKEL_BUILD_DLL + after += CCM_generic_stub_idl + IDL_Files { + } + Source_Files { + CCM_QoSS.cpp + } + Header_Files { + CCM_QoSS.h + } + specific { + install_dir = ccm/Generic + } +} diff --git a/CIAO/ccm/Generic/CCM_GenericComponent.idl b/CIAO/ccm/Generic/CCM_GenericComponent.idl new file mode 100644 index 00000000000..fef193b193a --- /dev/null +++ b/CIAO/ccm/Generic/CCM_GenericComponent.idl @@ -0,0 +1,20 @@ +// $Id$ + +#if !defined (CCM_GENERICCOMPONENT_IDL) +#define CCM_GENERICCOMPONENT_IDL + +#include "ccm/CCM_EnterpriseComponent.idl" +#include "ccm/Generic/CCM_GenericContext.idl" + +module Components +{ + local interface GenericComponent : EnterpriseComponent + { + void set_generic_context (in GenericContext ctx) + raises (CCMException); + void ccm_remove () + raises (CCMException); + }; +}; + +#endif /* CCM_GENERICCOMPONENT_IDL */ diff --git a/CIAO/ccm/Generic/CCM_GenericContext.idl b/CIAO/ccm/Generic/CCM_GenericContext.idl new file mode 100644 index 00000000000..41ca04fe033 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_GenericContext.idl @@ -0,0 +1,37 @@ +// $Id$ + +#if !defined (CCM_GENERICCONTEXT_IDL) +#define CCM_GENERICCONTEXT_IDL + +#include "ccm/CCM_Context.idl" +#include "ccm/Generic/CCM_ClientContainerInterceptorRegistration.idl" +#include "ccm/Generic/CCM_ServerContainerInterceptorRegistration.idl" +#include "ccm/Generic/CCM_StubContainerInterceptorRegistration.idl" +#include "ccm/Generic/CCM_ServantContainerInterceptorRegistration.idl" +#include "ccm/CCM_CCMException.idl" + +module Components +{ + local interface GenericContext : CCMContext + { + Components::ContainerPortableInterceptor::ClientContainerInterceptorRegistration + get_client_interceptor_registration () + raises (CCMException); + Components::ContainerPortableInterceptor::ServerContainerInterceptorRegistration + get_server_interceptor_registration () + raises (CCMException); + Components::ContainerPortableInterceptor::StubContainerInterceptorRegistration + get_stub_interceptor_registration() + raises (CCMException); + Components::ContainerPortableInterceptor::ServantContainerInterceptorRegistration + get_servant_interceptor_registration() + raises (CCMException); + + Cookie install_service_reference(in string service_id, in Object objref) + raises (CCMException); + Object uninstall_service_reference(in Cookie ck) + raises (CCMException); + }; +}; + +#endif /* CCM_GENERICCONTEXT_IDL */ diff --git a/CIAO/ccm/Generic/CCM_InvalidRegistration.idl b/CIAO/ccm/Generic/CCM_InvalidRegistration.idl new file mode 100644 index 00000000000..a5dc36c640e --- /dev/null +++ b/CIAO/ccm/Generic/CCM_InvalidRegistration.idl @@ -0,0 +1,14 @@ +// $Id$ + +#if !defined (CCM_INVALIDREGISTRATION_IDL) +#define CCM_INVALIDREGISTRATION_IDL + +module Components +{ + module ContainerPortableInterceptor + { + exception InvalidRegistration { }; + }; +}; + +#endif /* CCM_INVALIDREGISTRATION_IDL */ diff --git a/CIAO/ccm/Generic/CCM_QoS.idl b/CIAO/ccm/Generic/CCM_QoS.idl new file mode 100644 index 00000000000..fd654f50377 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_QoS.idl @@ -0,0 +1,31 @@ +// $Id$ + +#if !defined (CCM_QOS_IDL) +#define CCM_QOS_IDL + +#include "ccm/CCM_Cookie.idl" +#include "ccm/CCM_CCMException.idl" + +module Components +{ + module QoS { + struct QoSInstance { + string dimension; + any value; + }; + typedef sequence<QoSInstance> QoSInstances; + struct QoSConstraint { + string characteristic; + QoSInstances instances; + }; + typedef sequence<QoSConstraint> QoSConstraints; + interface Negotiation + { + Components::Cookie require_qos(in QoSConstraint requirements, in string client_id) + raises (CCMException); + void release_qos (in Components::Cookie ck); + }; + }; +}; + +#endif /* CCM_QOS_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ServantContainerInterceptor.idl b/CIAO/ccm/Generic/CCM_ServantContainerInterceptor.idl new file mode 100644 index 00000000000..82a1036e418 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ServantContainerInterceptor.idl @@ -0,0 +1,26 @@ +// $Id$ + +#if !defined (CCM_SERVANTCONTAINERINTERCEPTOR_IDL) +#define CCM_SERVANTCONTAINERINTERCEPTOR_IDL + +#include "ccm/Generic/CCM_ContainerInterceptor.idl" +#include "ccm/Generic/CCM_ContainerServantRequestInfo.idl" +#include "tao/PI/PI_include.pidl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ServantContainerInterceptor : ContainerInterceptor + { + void servant_receive_request (in ContainerServantRequestInfo info, out boolean proceed_call) + raises (PortableInterceptor::ForwardRequest); + void servant_send_reply (in ContainerServantRequestInfo info, out boolean proceed_call); + void servant_send_exception (in ContainerServantRequestInfo info, out boolean proceed_call) + raises (PortableInterceptor::ForwardRequest); + void servant_send_other (in ContainerServantRequestInfo info) + raises (PortableInterceptor::ForwardRequest); + }; + }; +}; +#endif /* CCM_SERVANTCONTAINERINTERCEPTOR_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ServantContainerInterceptorRegistration.idl b/CIAO/ccm/Generic/CCM_ServantContainerInterceptorRegistration.idl new file mode 100644 index 00000000000..070ccc55875 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ServantContainerInterceptorRegistration.idl @@ -0,0 +1,24 @@ +// $Id$ + +#if !defined (CCM_SERVANTCONTAINERINTERCEPTORREGISTRATION_IDL) +#define CCM_SERVANTCONTAINERINTERCEPTORREGISTRATION_IDL + +#include "ccm/CCM_Cookie.idl" +#include "ccm/Generic/CCM_InvalidRegistration.idl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ServantContainerInterceptor; + + local interface ServantContainerInterceptorRegistration + { + Components::Cookie register_servant_interceptor (in ServantContainerInterceptor ci); + ServantContainerInterceptor unregister_servant_interceptor (in Components::Cookie cookie) + raises(InvalidRegistration); + }; + }; +}; + +#endif /* CCM_SERVANTCONTAINERINTERCEPTORREGISTRATION_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ServerContainerInterceptor.idl b/CIAO/ccm/Generic/CCM_ServerContainerInterceptor.idl new file mode 100644 index 00000000000..c51077ff8f3 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ServerContainerInterceptor.idl @@ -0,0 +1,28 @@ +// $Id$ + +#if !defined (CCM_SERVERCONTAINERINTERCEPTOR_IDL) +#define CCM_SERVERCONTAINERINTERCEPTOR_IDL + +#include "ccm/Generic/CCM_ContainerInterceptor.idl" +#include "ccm/Generic/CCM_ContainerServerRequestInfo.idl" +#include "tao/PI/PIForwardRequest.pidl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ServerContainerInterceptor : ContainerInterceptor + { + void receive_request_service_contexts (in ContainerServerRequestInfo info) + raises (PortableInterceptor::ForwardRequest); + void receive_request (in ContainerServerRequestInfo info) + raises (PortableInterceptor::ForwardRequest); + void send_reply (in ContainerServerRequestInfo info); + void send_exception (in ContainerServerRequestInfo info) + raises (PortableInterceptor::ForwardRequest); + void send_other (in ContainerServerRequestInfo info) + raises (PortableInterceptor::ForwardRequest); + }; + }; +}; +#endif /* CCM_SERVERCONTAINERINTERCEPTOR_IDL */ diff --git a/CIAO/ccm/Generic/CCM_ServerContainerInterceptorRegistration.idl b/CIAO/ccm/Generic/CCM_ServerContainerInterceptorRegistration.idl new file mode 100644 index 00000000000..494915d2c14 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_ServerContainerInterceptorRegistration.idl @@ -0,0 +1,24 @@ +// $Id$ + +#if !defined (CCM_SERVERCONTAINERINTERCEPTORREGISTRATION_IDL) +#define CCM_SERVERCONTAINERINTERCEPTORREGISTRATION_IDL + +#include "ccm/CCM_Cookie.idl" +#include "ccm/Generic/CCM_InvalidRegistration.idl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface ServerContainerInterceptor; + + local interface ServerContainerInterceptorRegistration + { + Components::Cookie register_server_interceptor (in ServerContainerInterceptor ci); + ServerContainerInterceptor unregister_server_interceptor (in Components::Cookie cookie) + raises(InvalidRegistration); + }; + }; +}; + +#endif /* CCM_SERVERCONTAINERINTERCEPTORREGISTRATION_IDL */ diff --git a/CIAO/ccm/Generic/CCM_StubContainerInterceptor.idl b/CIAO/ccm/Generic/CCM_StubContainerInterceptor.idl new file mode 100644 index 00000000000..80a9a5fd571 --- /dev/null +++ b/CIAO/ccm/Generic/CCM_StubContainerInterceptor.idl @@ -0,0 +1,26 @@ +// $Id$ + +#if !defined (CCM_STUBCONTAINERINTERCEPTOR_IDL) +#define CCM_STUBCONTAINERINTERCEPTOR_IDL + +#include "ccm/Generic/CCM_ContainerInterceptor.idl" +#include "ccm/Generic/CCM_ContainerStubRequestInfo.idl" +#include "tao/PI/PI_include.pidl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface StubContainerInterceptor : ContainerInterceptor + { + void stub_send_request (in ContainerStubRequestInfo info, out boolean con) + raises (PortableInterceptor::ForwardRequest); + void stub_receive_reply (in ContainerStubRequestInfo info, out boolean con); + void stub_receive_exception (in ContainerStubRequestInfo info, out boolean con) + raises(PortableInterceptor::ForwardRequest); + void stub_receive_other (in ContainerStubRequestInfo info) + raises(PortableInterceptor::ForwardRequest); + }; + }; +}; +#endif /* CCM_STUBCONTAINERINTERCEPTOR_IDL */ diff --git a/CIAO/ccm/Generic/CCM_StubContainerInterceptorRegistration.idl b/CIAO/ccm/Generic/CCM_StubContainerInterceptorRegistration.idl new file mode 100644 index 00000000000..8ee2eca376e --- /dev/null +++ b/CIAO/ccm/Generic/CCM_StubContainerInterceptorRegistration.idl @@ -0,0 +1,24 @@ +// $Id$ + +#if !defined (CCM_STUBCONTAINERINTERCEPTORREGISTRATION_IDL) +#define CCM_STUBCONTAINERINTERCEPTORREGISTRATION_IDL + +#include "ccm/CCM_Cookie.idl" +#include "ccm/Generic/CCM_InvalidRegistration.idl" + +module Components +{ + module ContainerPortableInterceptor + { + local interface StubContainerInterceptor; + + local interface StubContainerInterceptorRegistration + { + Components::Cookie register_stub_interceptor (in StubContainerInterceptor ci); + StubContainerInterceptor unregister_stub_interceptor (in Components::Cookie cookie) + raises(InvalidRegistration); + }; + }; +}; + +#endif /* CCM_STUBCONTAINERINTERCEPTORREGISTRATION_IDL */ diff --git a/CIAO/ciao/Containers/Generic/Generic_Container.mpc b/CIAO/ciao/Containers/Generic/Generic_Container.mpc index 271169ecfc9..6f50db94270 100644 --- a/CIAO/ciao/Containers/Generic/Generic_Container.mpc +++ b/CIAO/ciao/Containers/Generic/Generic_Container.mpc @@ -41,7 +41,7 @@ project(CIAO_Generic_Container_stub) : install, ccm_stub, ciao_lib, ciao_contain project(CIAO_Generic_Container) : install, ccm_svnt, ciao_lib, ciao_generic_container_stub, utils, \ ciao_base, ciao_servant_activator, \ ciao_servant, ccm_generic_stub, portableserver { - after += CIAO_Generic_Container_idl + after += CIAO_Generic_Container_stub dynamicflags += GENERIC_CONTAINER_BUILD_DLL IDL_Files { diff --git a/CIAO/ciao/Contexts/Generic/Generic_Context_T.cpp b/CIAO/ciao/Contexts/Generic/Generic_Context_T.cpp new file mode 100644 index 00000000000..217b507c460 --- /dev/null +++ b/CIAO/ciao/Contexts/Generic/Generic_Context_T.cpp @@ -0,0 +1,80 @@ +// $Id$ + +#ifndef CIAO_GENERIC_CONTEXT_IMPL_T_C +#define CIAO_GENERIC_CONTEXT_IMPL_T_C + +namespace CIAO +{ + template <typename BASE_CTX, + typename COMP> + Generic_Context_Impl<BASE_CTX, COMP>::Generic_Context_Impl ( + Components::CCMHome_ptr the_home, + ::CIAO::Generic_Container_ptr c, + PortableServer::Servant sv, + const char* id) + : Context_Impl_Base_T < ::CIAO::Generic_Container> (the_home, c, id), + servant_ (sv) + { + } + + template <typename BASE_CTX, + typename COMP> + Generic_Context_Impl<BASE_CTX, COMP>::~Generic_Context_Impl (void) + { + } + + template <typename BASE_CTX, + typename COMP> + ::Components::ContainerPortableInterceptor::ClientContainerInterceptorRegistration_ptr + Generic_Context_Impl<BASE_CTX, COMP>::get_client_interceptor_registration (void) + { + return this->container_->get_client_interceptor_registration (); + } + + template <typename BASE_CTX, + typename COMP> + ::Components::ContainerPortableInterceptor::ServantContainerInterceptorRegistration_ptr + Generic_Context_Impl<BASE_CTX, COMP>::get_servant_interceptor_registration (void) + { + return this->container_->get_servant_interceptor_registration (); + } + + template <typename BASE_CTX, + typename COMP> + ::Components::ContainerPortableInterceptor::ServerContainerInterceptorRegistration_ptr + Generic_Context_Impl<BASE_CTX, COMP>::get_server_interceptor_registration (void) + { + return this->container_->get_server_interceptor_registration (); + } + + template <typename BASE_CTX, + typename COMP> + ::Components::ContainerPortableInterceptor::StubContainerInterceptorRegistration_ptr + Generic_Context_Impl<BASE_CTX, COMP>::get_stub_interceptor_registration (void) + { + return this->container_->get_stub_interceptor_registration (); + } + + template <typename BASE_CTX, + typename COMP> + ::Components::Cookie * + Generic_Context_Impl<BASE_CTX, COMP>::install_service_reference ( + const char * service_id, + ::CORBA::Object_ptr objref) + { + return this->container_->install_service_reference (service_id, + objref); + } + + template <typename BASE_CTX, + typename COMP> + ::CORBA::Object_ptr + Generic_Context_Impl<BASE_CTX, COMP>::uninstall_service_reference ( + ::Components::Cookie * ck) + { + return this->container_->uninstall_service_reference (ck); + } +} + +#endif /* CIAO_GENERIC_CONTEXT_IMPL_T_C */ + diff --git a/CIAO/ciao/Contexts/Generic/Generic_Context_T.h b/CIAO/ciao/Contexts/Generic/Generic_Context_T.h new file mode 100644 index 00000000000..f6d56ce58ee --- /dev/null +++ b/CIAO/ciao/Contexts/Generic/Generic_Context_T.h @@ -0,0 +1,89 @@ +// -*- C++ -*- + +//============================================================================= +/** + * @file Generic_Context_T.h + * + * $Id$ + * + * @author Johnny Willemsen <jwillemsen@remedy.nl> + */ +//============================================================================= + + +#ifndef CIAO_GENERICCONTEXT_H +#define CIAO_GENERICCONTEXT_H + +#include /**/ "ace/pre.h" + +#include "ciao/Contexts/Context_Impl_Base_T.h" +#include "ciao/Containers/Generic/Generic_ContainerC.h" +#include "tao/LocalObject.h" +#include "tao/PortableServer/PS_ForwardC.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +namespace CIAO +{ + template <typename BASE_CTX, + typename COMP> + class Generic_Context_Impl + : public virtual BASE_CTX, + public virtual ::CIAO::Context_Impl_Base_T < ::CIAO::Generic_Container>, + 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; + + Generic_Context_Impl(Components::CCMHome_ptr home, + ::CIAO::Generic_Container_ptr c, + PortableServer::Servant sv, + const char* id); + + virtual ~Generic_Context_Impl (void); + + virtual ::Components::ContainerPortableInterceptor::ClientContainerInterceptorRegistration_ptr + get_client_interceptor_registration (void); + + virtual ::Components::ContainerPortableInterceptor::ServantContainerInterceptorRegistration_ptr + get_servant_interceptor_registration (void); + + virtual ::Components::ContainerPortableInterceptor::ServerContainerInterceptorRegistration_ptr + get_server_interceptor_registration (void); + + virtual ::Components::ContainerPortableInterceptor::StubContainerInterceptorRegistration_ptr + get_stub_interceptor_registration (void); + + virtual ::Components::Cookie * install_service_reference ( + const char * service_id, + ::CORBA::Object_ptr objref); + + virtual ::CORBA::Object_ptr uninstall_service_reference ( + ::Components::Cookie * ck); + + private: + PortableServer::Servant servant_; + typename COMP::_var_type component_; + }; +} + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "ciao/Contexts/Generic/Generic_Context_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("ciao/Contexts/Generic/Generic_Context_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include /**/ "ace/post.h" + +#endif /* CIAO_GENERICCONTEXT_H */ diff --git a/CIAO/ciao/Servants/Generic/Servant_Impl_T.cpp b/CIAO/ciao/Servants/Generic/Servant_Impl_T.cpp new file mode 100644 index 00000000000..b5980b5c93a --- /dev/null +++ b/CIAO/ciao/Servants/Generic/Servant_Impl_T.cpp @@ -0,0 +1,201 @@ +// $Id$ + +#ifndef CIAO_SERVANT_IMPL_T_C +#define CIAO_SERVANT_IMPL_T_C + +namespace CIAO +{ + template <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + Generic_Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::Generic_Servant_Impl ( + EXEC * exe, + Components::CCMHome_ptr home, + const char * ins_name, + Home_Servant_Impl_Base *home_servant, + ::CIAO::Generic_Container_ptr c) + : CONTEXT::svnt_base_type (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, ins_name)); + + ::Components::GenericComponent_var scom = + ::Components::GenericComponent::_narrow (exe); + + if (! ::CORBA::is_nil (scom.in ())) + { + scom->set_generic_context (this->context_); + } + else + { + CIAO_DEBUG (6, + (LM_DEBUG, CLINFO + "Generic_Servant_Impl_T::Generic_Servant_Impl_T - " + "Couldn't set session context for %C\n", + ins_name)); + } + } + + template <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + Generic_Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::~Generic_Servant_Impl (void) + { + if (this->executor_->_refcount_value () > 1) + { + CIAO_ERROR (1, + (LM_ERROR, CLINFO + "Generic_Servant_Impl_T::~Generic_Servant_Impl_T - " + "Executor object reference count is %u\n", + this->executor_->_refcount_value ())); + } + + this->context_->_remove_ref (); + } + + // Operations for CCMObject interface. + template <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + CORBA::Boolean + Generic_Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::same_component ( + CORBA::Object_ptr object_ref) + { + if (::CORBA::is_nil (object_ref)) + { + throw ::CORBA::BAD_PARAM (); + } + + ::CORBA::Object_var me; // @todo = 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 <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + ::Components::CCMHome_ptr + Generic_Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::get_ccm_home (void) + { + return this->context_->get_CCM_home (); + } + + template <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + Components::EnterpriseComponent_ptr + Generic_Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::get_executor (void) + { + return ::Components::EnterpriseComponent::_duplicate (this->executor_.in ()); + } + + template <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + CORBA::Object_ptr + Generic_Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::_get_component (void) + { + ::Components::GenericContext_var sc = + ::Components::GenericContext::_narrow (this->context_); + + if (! ::CORBA::is_nil (sc.in ())) + { +// @todo return sc->get_CCM_object (); + } + + throw ::CORBA::INTERNAL (); + } + + // CIAO-specific operations. + + template <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + void + Generic_Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::activate_component (void) + { + if (this->configuration_completed_ && !this->activated_) + { + ::Components::GenericComponent_var temp = + ::Components::GenericComponent::_narrow (this->executor_.in ()); + + if (! ::CORBA::is_nil (temp.in ())) + { + // @todo temp->ccm_activate (); + this->activated_ = true; + } + } + } + + template <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + void + Generic_Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::passivate_component (void) + { + if (this->activated_) + { + ::Components::GenericComponent_var temp = + ::Components::GenericComponent::_narrow (this->executor_.in ()); + + if (! ::CORBA::is_nil (temp.in ())) + { + // @todo temp->ccm_passivate (); + this->activated_ = false; + } + } + } + + template <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + void + Generic_Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::configuration_complete (void) + { + if (!this->configuration_completed_) + { + ::Components::GenericComponent_var temp = + ::Components::GenericComponent::_narrow (this->executor_.in ()); + + if (! ::CORBA::is_nil (temp.in ())) + { + // @todo temp->configuration_complete (); + this->configuration_completed_ = true; + } + } + } + + template <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + void + Generic_Servant_Impl<BASE_SKEL, EXEC, CONTEXT>::ccm_remove (void) + { + ::Components::GenericComponent_var temp = + ::Components::GenericComponent::_narrow (this->executor_.in ()); + + if (! ::CORBA::is_nil (temp.in ())) + { + temp->ccm_remove (); + } + else + { + throw ::CORBA::INTERNAL (); + } + } +} + +#endif /* CIAO_SERVANT_IMPL_T_C */ diff --git a/CIAO/ciao/Servants/Generic/Servant_Impl_T.h b/CIAO/ciao/Servants/Generic/Servant_Impl_T.h new file mode 100644 index 00000000000..0d19b76d22b --- /dev/null +++ b/CIAO/ciao/Servants/Generic/Servant_Impl_T.h @@ -0,0 +1,98 @@ +// -*- 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 <boris@dre.vanderbilt.edu> + * Jeff Parsons <j.parsons@vanderbilt.edu> + */ +//============================================================================= + +#ifndef CIAO_SERVANT_IMPL_T_H +#define CIAO_SERVANT_IMPL_T_H + +#include /**/ "ace/pre.h" + +#include "ciao/Servants/Servant_Impl_Base.h" + +#if !defined (ACE_LACKS_PRAGMA_ONCE) +# pragma once +#endif /* ACE_LACKS_PRAGMA_ONCE */ + +#include "ccm/Generic/CCM_GenericComponentC.h" + +namespace CIAO +{ + /** + * @class Generic_Servant_Impl + * + * @brief Mixin base class for generated servant. + * + * This class implements navigation and other operations + * common to all generated servants. + */ + template <typename BASE_SKEL, + typename EXEC, + typename CONTEXT> + class Generic_Servant_Impl : + public virtual BASE_SKEL, + public virtual CONTEXT::svnt_base_type + { + public: + Generic_Servant_Impl (EXEC * exe, + Components::CCMHome_ptr home, + const char * ins_name, + Home_Servant_Impl_Base *home_servant, + ::CIAO::Generic_Container_ptr c); + + virtual ~Generic_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::EnterpriseComponent_ptr get_executor (); + + void configuration_complete (); + + virtual void activate_component (); + + virtual void passivate_component (); + + protected: + virtual void ccm_remove (void); + + CORBA::Boolean activated_; + CORBA::Boolean configuration_completed_; + + /// Initialized in this constructor. + typename EXEC::_var_type executor_; + + /// Initialized in this constructor. + CONTEXT * context_; + + const char * ins_name_; + }; +} + +#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) +#include "ciao/Servants/Generic/Servant_Impl_T.cpp" +#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ + +#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) +#pragma implementation ("ciao/Servants/Generic/Servant_Impl_T.cpp") +#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ + +#include /**/ "ace/post.h" + +#endif /* CIAO_SERVANT_IMPL_T_H */ |