CIAOX11, A LwCCM implementation supporting the IDL to C++11 language mapping

100 %
0 %
Information about CIAOX11, A LwCCM implementation supporting the IDL to C++11 language...

Published on February 27, 2014

Author: RemedyIT



Presentation about the upcoming new LwCCM implementation called CIAOX11

CIAOX11 A LwCCM implementation supporting the IDL to C++11 language mapping Johnny Willemsen

Advantages of IDL to C++11 The IDL to C++11 language mapping has the following advantages compared to the IDL to C++ language mapping • • • • • • 2 Easier to use Language mapping is much safer to use Improved runtime performance Reduced training time Reduced development and test time Faster time to market Copyright © 2014

Requirements for CIAOX11 LwCCM implementation using the IDL to C++11 Language Mapping Existing CIAO deployment plans should be reusable without a change Reduced footprint compared to CIAO Reduced dependency on CORBA Reduced set of features compared to CIAO • No support for CCM events • No support for the IDL ‘supports’ keyword • Component attributes are set to their initial value using a D&C compliant deployment tool but not changeable through CORBA • Support for homes as basic component factory 3 Copyright © 2014

Prerequisites CIAOX11 C++ compiler supporting C++11 GCC 4.7 or newer Intel C++ 2013 SP1 Update 2 or newer on Linux Other C++ compilers have been tested but lack features Extensible IDL compiler supporting IDL2, IDL3, and IDL3+ • RIDLC Implementation of the IDL to C++11 language mapping for all IDL type constructs • TAOX11 4 Copyright © 2014

RIDLC Ruby based IDL compiler developed by Remedy IT Front end with support for IDL2, IDL3, IDL3+, and annotations compatible with DDS-XTypes Supports pluggable and extensible backends Current available backends • IDL to Ruby • IDL to C++ • IDL to C++11 A LwCCM C++11 backend can be developed by extending the existing IDL to C++11 backend Frontend is available as Ruby Gem from 5 Copyright © 2014

TAOX11 Commercial CORBA implementation by Remedy IT Compliant with the IDL to C++11 v1.1 language mapping Uses TAO core leveraging its portability and features Uses RIDLC as IDL compiler Extended suite of unit tests 6 Copyright © 2014

Requirements CIAOX11 Fixes the API for component developers by using the IDL to C++11 language mapping Independent from the existing CIAO LwCCM implementation Existing CIAO deployment plans can be used without any change Uses TAOX11 for the C++11 type system and CORBA support Uses RIDLC as extensible IDL compiler Support for scheduling application timers into the main component framework thread 7 Copyright © 2014

Requirements DAnCEX11 CIAOX11 components, connectors, and homes must be deployed The DAnCE Locality Manager (LM) is an extensible component server and has to be ported to C++11 The LM provides plugin support at various interception points IDL to C++11 Language Mapping changes the plugin C++ API Other D&C applications are not required to be redeveloped because the communication with the LM happens through remote CORBA calls 8 Copyright © 2014

Requirements DAnCEX11 LM DAnCEX11 Locality Manager will be developed Mainly a conversion from C++ to C++11 Same set of features as the DAnCE LM Will provide same plugin support as the DAnCE LM 9 Copyright © 2014


CIAO Container architecture CIAO container uses the fact that a reference to a local object is just a C++ pointer and uses a dynamic_cast<> to get the C++ implementation class CIAO container uses the component and facet CORBA servants for interaction with the component and facet executors from the container CIAO container is big in terms of functionality, Lines Of Code (LOC), and footprint 11 Copyright © 2014

CIAOX11 Container Architecture CIAOX11 container shall not depend on CORBA for its core functionality CIAOX11 container shall be much smaller in terms of LOC and footprint 12 Copyright © 2014

CIAOX11 Container CIAOX11 container will provide services to the components hosted CIAOX11 container will not load any components, the installation handlers will do that Major redesign will happen to simplify the container compared to CIAO 13 Copyright © 2014

Component CORBA servant Signature of the component CORBA servant entry point as used by D&C will be updated with a different return value Name of the entry point will be kept the same which means deployment plans don’t change A CIAOX11 ExecutorLocator is returned which provides access to all needed component related entities: • Component and facet executors • Component context • Component CORBA object reference • Component configurator 14 Copyright © 2014

Component configurator Responsible for setting component attributes to their initial value Converts attribute names to concrete method invocations onto the component executor Extracts the attribute value from their Any encapsupation 15 Copyright © 2014

Component / facet CORBA servants Clients High level architecture Facet Executor Facet Executor Facet Executor Component Executor Component Configurator Component Context Executor Locator CIAOX11 Container & Deployment Interceptors 16 User code Generated CIAOX11 Core Copyright © 2014

Component context Provides object references for all receptacles of a component LwCCM defined context will be extended with a generic connect/disconnect method The SessionContext get_CCM_object will be removed Simplified API because of the fact that the connection_name is now used as Cookie, no valuetypes anymore! 17 Copyright © 2014

Lifecycle operations CIAOX11 lifecycle operations will go directly from the container to the component executor using the ExecutorLocator Which operations are called on the component executor is determined by the container, not by the generated code 18 Copyright © 2014

Component CORBA servant The component CORBA servant is used by D&C to retrieve CORBA facet object references The component CORBA servant is registered with the POA using its unique D&C id Retrieval of facet CORBA object references happens through the POA using the unique component D&C id and the facet name, the references are not cached in the component CORBA servant One CORBA component servant implementation will be used for all user components, no user component specific API will be available through CORBA The component CORBA servant is not required for the container to operate 19 Copyright © 2014

Connector CORBA servant Connectors only provide local facets The connector CORBA servant is used by the D&C installation handler when connecting a local connection When this D&C dependency can be broken no connector CORBA servant will be needed • A DDS4CCM connector will at that moment have no component and facet CORBA servants • Leads to a heavy reduction in code generation and footprint for connectors 20 Copyright © 2014

Facet CORBA servant The facet CORBA servant is used by clients to make invocations on the component Delegates all operations and attribute access to the facet executor Not needed for local facets, like the facets of a DDS4CCM connector No usage of inheritance for the C++11 facet CORBA servants leads to reduced dependencies 21 Copyright © 2014

DDS4CCM DDS4CCM connectors have to be implemented using C++11 Will support a similar C++ templated connector framework as CIAO does Optimal integration requires a DDS vendor that natively supports IDL to C++11 for • Built in DDS entities and types • User defined types as generated by TAOX11 • IDL defined type specific DataReader and DataWriter 22 Copyright © 2014

RTI DDS 5.1.0 integration RTI DDS 5.1.0 lacks support for IDL to C++11 CIAOX11 will provide C++11 API to the user and convert internally to the RTI C++ API • Makes the integration possible • Can be adapted for other DDS vendors that lack C++11 support • Templated design allows for full optimization when a DDS vendor with native IDL to C++11 support is integrated No usage of the RTI CORBA Compatibility Kit (CCK) Runtime conversion of user data to the RTI C++ types New set of RIDLC backends for generating the type conversion 23 Copyright © 2014

AMI4CCM AMI4CCM connectors have to be implemented using C++11 TAOX11 CORBA AMI support required CORBA AMI support will be completely hidden inside the AMI4CCM connector, nothing will be exposed to the component developer 24 Copyright © 2014

Timer support CIAO exposes the ACE Reactor to the component developer through the component CORBA servant CIAOX11 will provide access to the TAOX11 ORB through the LwCCM service registry The TAOX11 ORB will provide access to its ACE Reactor Future revisions of the LwCCM standard need to address the lack of a timer concept in LwCCM 25 Copyright © 2014

Valuetypes CIAOX11 will modify the LwCCM IDL to not use valuetypes ConfigValue will be changed to an IDL struct Cookie will be an IDL string simplifying the usage of it 26 Copyright © 2014

Starter Executor Generation (1) CIAOX11 will use RIDLC for generating the starter code for the component and facet executors Unique RIDLC regeneration blocks will be added to the generated starter code • A regeneration block is enclosed by a begin and end marker • Marker is unique for the file where it is used in RIDLC will read in the existing file, store the blocks and place them back upon regeneration 27 Copyright © 2014

Starter Executor Generation (2) // Some example markers, the @@{__RIDL_REGEN_MARKER__} // flags of RIDLC part can be changed through the commandline //@@{__RIDL_REGEN_MARKER__} - BEGIN : CIAO_Shapes_Receiver_Impl[src_includes] #include "ace/OS_NS_time.h" //@@{__RIDL_REGEN_MARKER__} - END : CIAO_Shapes_Receiver_Impl[src_includes] void info_out_data_listener_exec_i::on_one_data (const ::ShapeType& datum, const ::CCM_DDS::ReadInfo& info) { //@@{__RIDL_REGEN_MARKER__} - BEGIN : info_out_data_listener_exec_i::on_one_data[_datum_info] std::cout << “Received shape <“ << datum << std::endl; //@@{__RIDL_REGEN_MARKER__} - END : info_out_data_listener_exec_i::on_one_data[_datum_info] } Receiver_exec_i::~Receiver_exec_i () { //@@{__RIDL_REGEN_MARKER__} - BEGIN : CIAO_Shapes_Receiver_Impl::Receiver_exec_i[destructor] //@@{__RIDL_REGEN_MARKER__} - END : CIAO_Shapes_Receiver_Impl::Receiver_exec_i[destructor] } 28 Copyright © 2014

CIAOX11 Releases 29 Copyright © 2014

Alpha release (Q2 2014) Android, RHEL 6.x, Fedora >= 17, OpenSuSE >= 12.2, CentOS 6.x, and Windows 32/64 using MinGW as possible supported platforms Support for components and connectors Reduced dependency on CORBA compared to CIAO DDS4CCM Event connector using RTI DDS 5.1.0 No CORBA support for connections between components Single node deployment support using a special Node Manager Open source 30 Copyright © 2014

V1.0 release Android, RHEL 6.x, Fedora >= 17, OpenSuSE >= 12.2, CentOS 6.x, and Windows 32/64 using MinGW as possible supported platforms Support for components, connectors, and homes CORBA support for connections between components DDS4CCM Event and State connectors using RTI DDS 5.1.0 AMI4CCM connectors Full suite of unit tests and examples Full D&C compliant toolchain 31 Confidential

Resources 32 Copyright © 2014

External links TAOX11 • ACE/TAO/CIAO/DANCE • IDL to C++11 specification • IDL to C++11 background and tutorials • 33 Copyright © 2014

Want to know more about TAOX11 or CIAOX11? Go to our OSPortal at and our SWSupport at See our other presentations at Contact us at Call us +31-10-5220139 34 Copyright © 2014

Add a comment

Related presentations

Related pages

Asynchronous Method Invocation through Connectors IDL to C++11

Shall not extend the LwCCM ... An updated IDL to C++ language mapping ... opportunity to define a new language mapping • C++11 features are not ...
Read more

Johnny Willemsen | LinkedIn

Currently working on AXCIOMA, a new LwCCM implementation which is using the IDL to C++11 language mapping. This new implementation is a major step in the ...
Read more

Asynchronous Method Invocation through Connectors IDL to C++11

Asynchronous Method Invocation through Connectors ... LwCCM implementation using IDL to C++11 ... standard using the IDL to C++ language mapping
Read more

Forums | ORBZone - community site for CORBA, CCM and ...

Discussions about the CIAOX11 implementation which is a CCM implementation supporting the new IDL to C++11 language ... IDL to C++11 language mapping.
Read more

lwccm | ORBZone - community site for CORBA, CCM and ...

The OMG has recently published a public version of the IDL to C++11 v1.2 language mapping. This revised language mapping simplifies the ... and LwCCM ...
Read more

Remedy IT | LinkedIn

See who you know at Remedy IT, ... the CORBA implementation for C++11 see ... This free tutorial gives an overview of the IDL to C++11 language mapping ...
Read more

Free CORBA® Downloads - Welcome To The OMG's CORBA Website

... if you know of a CORBA related demo, implementation, ... a state of the art CORBA implementation which supports the IDL to C++11 language mapping."
Read more

IDL (programming language) - Wikipedia, the free encyclopedia

The syntax includes many constructs from Fortran and some from C. IDL ... languages, IDL is very ... Language, a free implementation ...
Read more