Submit Search
Upload
CORBA Programming with TAOX11/C++11 tutorial
•
1 like
•
677 views
Remedy IT
Follow
CORBA Programming with TAOX11/C++11 tutorial
Read less
Read more
Technology
Report
Share
Report
Share
1 of 45
Download now
Download to read offline
Recommended
Comparing IDL to C++ with IDL to C++11
Comparing IDL to C++ with IDL to C++11
Remedy IT
AMI4CCM_IDL2CPP
AMI4CCM_IDL2CPP
Remedy IT
Object-Oriented Programming in Modern C++. Borislav Stanimirov. CoreHard Spri...
Object-Oriented Programming in Modern C++. Borislav Stanimirov. CoreHard Spri...
corehard_by
C language programming
C language programming
pullarao29
Embedded C programming based on 8051 microcontroller
Embedded C programming based on 8051 microcontroller
Gaurav Verma
Pointer and Object in C++
Pointer and Object in C++
Kamlesh Makvana
Cling the llvm based interpreter
Cling the llvm based interpreter
Roberto Nogueira
Silicon Valley Code Camp - Do you C what I C
Silicon Valley Code Camp - Do you C what I C
Embarcadero Technologies
Recommended
Comparing IDL to C++ with IDL to C++11
Comparing IDL to C++ with IDL to C++11
Remedy IT
AMI4CCM_IDL2CPP
AMI4CCM_IDL2CPP
Remedy IT
Object-Oriented Programming in Modern C++. Borislav Stanimirov. CoreHard Spri...
Object-Oriented Programming in Modern C++. Borislav Stanimirov. CoreHard Spri...
corehard_by
C language programming
C language programming
pullarao29
Embedded C programming based on 8051 microcontroller
Embedded C programming based on 8051 microcontroller
Gaurav Verma
Pointer and Object in C++
Pointer and Object in C++
Kamlesh Makvana
Cling the llvm based interpreter
Cling the llvm based interpreter
Roberto Nogueira
Silicon Valley Code Camp - Do you C what I C
Silicon Valley Code Camp - Do you C what I C
Embarcadero Technologies
C and C++ Industrial Training Jalandhar
C and C++ Industrial Training Jalandhar
Dreamtech Labs
Introduction to llvm
Introduction to llvm
Tao He
C programming
C programming
Rounak Samdadia
OOP in C++
OOP in C++
ppd1961
Introduction Of C++
Introduction Of C++
Sangharsh agarwal
Syntactic Salt and Sugar Presentation
Syntactic Salt and Sugar Presentation
grepalex
C sharp
C sharp
sanjay joshi
C# in depth
C# in depth
Arnon Axelrod
COM1407: Introduction to C Programming
COM1407: Introduction to C Programming
Hemantha Kulathilake
Syntutic
Syntutic
Rohit Chintu
What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)
Moaid Hathot
C programming
C programming
Envision Computer Training Institute
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Eelco Visser
Top C Language Interview Questions and Answer
Top C Language Interview Questions and Answer
Vineet Kumar Saini
(2) c sharp introduction_basics_part_i
(2) c sharp introduction_basics_part_i
Nico Ludwig
CS4200 2019 Lecture 1: Introduction
CS4200 2019 Lecture 1: Introduction
Eelco Visser
Introduction to C++
Introduction to C++
Bharat Kalia
C Programming
C Programming
Rumman Ansari
The smartpath information systems c plus plus
The smartpath information systems c plus plus
The Smartpath Information Systems,Bhilai,Durg,Chhattisgarh.
Deep C
Deep C
Olve Maudal
Comparing IDL to C++ with IDL to C++11
Comparing IDL to C++ with IDL to C++11
Remedy IT
AXCIOMA, the internals, the component framework for distributed, real-time, a...
AXCIOMA, the internals, the component framework for distributed, real-time, a...
Remedy IT
More Related Content
What's hot
C and C++ Industrial Training Jalandhar
C and C++ Industrial Training Jalandhar
Dreamtech Labs
Introduction to llvm
Introduction to llvm
Tao He
C programming
C programming
Rounak Samdadia
OOP in C++
OOP in C++
ppd1961
Introduction Of C++
Introduction Of C++
Sangharsh agarwal
Syntactic Salt and Sugar Presentation
Syntactic Salt and Sugar Presentation
grepalex
C sharp
C sharp
sanjay joshi
C# in depth
C# in depth
Arnon Axelrod
COM1407: Introduction to C Programming
COM1407: Introduction to C Programming
Hemantha Kulathilake
Syntutic
Syntutic
Rohit Chintu
What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)
Moaid Hathot
C programming
C programming
Envision Computer Training Institute
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Eelco Visser
Top C Language Interview Questions and Answer
Top C Language Interview Questions and Answer
Vineet Kumar Saini
(2) c sharp introduction_basics_part_i
(2) c sharp introduction_basics_part_i
Nico Ludwig
CS4200 2019 Lecture 1: Introduction
CS4200 2019 Lecture 1: Introduction
Eelco Visser
Introduction to C++
Introduction to C++
Bharat Kalia
C Programming
C Programming
Rumman Ansari
The smartpath information systems c plus plus
The smartpath information systems c plus plus
The Smartpath Information Systems,Bhilai,Durg,Chhattisgarh.
Deep C
Deep C
Olve Maudal
What's hot
(20)
C and C++ Industrial Training Jalandhar
C and C++ Industrial Training Jalandhar
Introduction to llvm
Introduction to llvm
C programming
C programming
OOP in C++
OOP in C++
Introduction Of C++
Introduction Of C++
Syntactic Salt and Sugar Presentation
Syntactic Salt and Sugar Presentation
C sharp
C sharp
C# in depth
C# in depth
COM1407: Introduction to C Programming
COM1407: Introduction to C Programming
Syntutic
Syntutic
What's coming to c# (Tel-Aviv, 2018)
What's coming to c# (Tel-Aviv, 2018)
C programming
C programming
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Top C Language Interview Questions and Answer
Top C Language Interview Questions and Answer
(2) c sharp introduction_basics_part_i
(2) c sharp introduction_basics_part_i
CS4200 2019 Lecture 1: Introduction
CS4200 2019 Lecture 1: Introduction
Introduction to C++
Introduction to C++
C Programming
C Programming
The smartpath information systems c plus plus
The smartpath information systems c plus plus
Deep C
Deep C
Similar to CORBA Programming with TAOX11/C++11 tutorial
Comparing IDL to C++ with IDL to C++11
Comparing IDL to C++ with IDL to C++11
Remedy IT
AXCIOMA, the internals, the component framework for distributed, real-time, a...
AXCIOMA, the internals, the component framework for distributed, real-time, a...
Remedy IT
AXCIOMA, the internals, the component framework for distributed, real-time, a...
AXCIOMA, the internals, the component framework for distributed, real-time, a...
Remedy IT
IDL to C++11 revised submission presentation
IDL to C++11 revised submission presentation
Remedy IT
AMI4CCM, custom DDS connectors, and IDL to C++11
AMI4CCM, custom DDS connectors, and IDL to C++11
Remedy IT
Integrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approach
Remedy IT
Integrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approach
Remedy IT
Integrating DDS into AXCIOMA - The Component Approach
Integrating DDS into AXCIOMA - The Component Approach
Real-Time Innovations (RTI)
Modernizing SCA through new Object Management Group (OMG) standards
Modernizing SCA through new Object Management Group (OMG) standards
Remedy IT
Common Object Request Broker Architecture - CORBA
Common Object Request Broker Architecture - CORBA
Peter R. Egli
IDL to C++11 OMG RTWS presentations
IDL to C++11 OMG RTWS presentations
Remedy IT
Model Driven, Component Based Development for CBDDS and IDL to C++11
Model Driven, Component Based Development for CBDDS and IDL to C++11
Remedy IT
DDS Programming with IDL to C++11 tutorial
DDS Programming with IDL to C++11 tutorial
Remedy IT
Modernizing SCA through new Object Management Group (OMG) standards
Modernizing SCA through new Object Management Group (OMG) standards
Remedy IT
PLUG code generation tool
PLUG code generation tool
Emmanuel Fuchs
Component Based DDS with C++11 and R2DDS
Component Based DDS with C++11 and R2DDS
Remedy IT
Introduction to C Programming
Introduction to C Programming
Amr Ali (ISTQB CTAL Full, CSM, ITIL Foundation)
AmiBroker AFL to DLL Conversion
AmiBroker AFL to DLL Conversion
afl2dll
Ch07 Programming for Security Professionals
Ch07 Programming for Security Professionals
phanleson
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Maarten Balliauw
Similar to CORBA Programming with TAOX11/C++11 tutorial
(20)
Comparing IDL to C++ with IDL to C++11
Comparing IDL to C++ with IDL to C++11
AXCIOMA, the internals, the component framework for distributed, real-time, a...
AXCIOMA, the internals, the component framework for distributed, real-time, a...
AXCIOMA, the internals, the component framework for distributed, real-time, a...
AXCIOMA, the internals, the component framework for distributed, real-time, a...
IDL to C++11 revised submission presentation
IDL to C++11 revised submission presentation
AMI4CCM, custom DDS connectors, and IDL to C++11
AMI4CCM, custom DDS connectors, and IDL to C++11
Integrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA, the component approach
Integrating DDS into AXCIOMA - The Component Approach
Integrating DDS into AXCIOMA - The Component Approach
Modernizing SCA through new Object Management Group (OMG) standards
Modernizing SCA through new Object Management Group (OMG) standards
Common Object Request Broker Architecture - CORBA
Common Object Request Broker Architecture - CORBA
IDL to C++11 OMG RTWS presentations
IDL to C++11 OMG RTWS presentations
Model Driven, Component Based Development for CBDDS and IDL to C++11
Model Driven, Component Based Development for CBDDS and IDL to C++11
DDS Programming with IDL to C++11 tutorial
DDS Programming with IDL to C++11 tutorial
Modernizing SCA through new Object Management Group (OMG) standards
Modernizing SCA through new Object Management Group (OMG) standards
PLUG code generation tool
PLUG code generation tool
Component Based DDS with C++11 and R2DDS
Component Based DDS with C++11 and R2DDS
Introduction to C Programming
Introduction to C Programming
AmiBroker AFL to DLL Conversion
AmiBroker AFL to DLL Conversion
Ch07 Programming for Security Professionals
Ch07 Programming for Security Professionals
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
Microservices for building an IDE – The innards of JetBrains Rider - TechDays...
More from Remedy IT
AXCIOMA, the component framework for distributed, real-time and embedded systems
AXCIOMA, the component framework for distributed, real-time and embedded systems
Remedy IT
Remedy IT Company presentation
Remedy IT Company presentation
Remedy IT
ACE/TAO/CIAO/DAnCE Maintenance overview
ACE/TAO/CIAO/DAnCE Maintenance overview
Remedy IT
Remedy IT Revised Submission Presentation for the Unified Component Model (UC...
Remedy IT Revised Submission Presentation for the Unified Component Model (UC...
Remedy IT
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...
Remedy IT
AXCIOMA, the component framework for distributed, real-time and embedded systems
AXCIOMA, the component framework for distributed, real-time and embedded systems
Remedy IT
Component Technologies for Fractionated Satellites
Component Technologies for Fractionated Satellites
Remedy IT
UCM Initial Submission presentation
UCM Initial Submission presentation
Remedy IT
Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...
Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...
Remedy IT
Unified Component Model for Distributed, Real- Time and Embedded Systems Requ...
Unified Component Model for Distributed, Real- Time and Embedded Systems Requ...
Remedy IT
Request For Proposal Unified Component Model for Distributed, Real-Time and E...
Request For Proposal Unified Component Model for Distributed, Real-Time and E...
Remedy IT
Test What Matters Most
Test What Matters Most
Remedy IT
IDL to C++03 RFC
IDL to C++03 RFC
Remedy IT
F6COM: A Case Study in Extending Container Services through Connectors
F6COM: A Case Study in Extending Container Services through Connectors
Remedy IT
Draft Request For Proposal Unified Component Model for Distributed, Real-Time...
Draft Request For Proposal Unified Component Model for Distributed, Real-Time...
Remedy IT
Test What Matters Most
Test What Matters Most
Remedy IT
Component Based Model Driven Development of Mission Critical Defense Applicat...
Component Based Model Driven Development of Mission Critical Defense Applicat...
Remedy IT
Remedy IT Flyer_introduction
Remedy IT Flyer_introduction
Remedy IT
More from Remedy IT
(18)
AXCIOMA, the component framework for distributed, real-time and embedded systems
AXCIOMA, the component framework for distributed, real-time and embedded systems
Remedy IT Company presentation
Remedy IT Company presentation
ACE/TAO/CIAO/DAnCE Maintenance overview
ACE/TAO/CIAO/DAnCE Maintenance overview
Remedy IT Revised Submission Presentation for the Unified Component Model (UC...
Remedy IT Revised Submission Presentation for the Unified Component Model (UC...
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...
Revised submission for Unified Component Model (UCM) for Distributed, Real-Ti...
AXCIOMA, the component framework for distributed, real-time and embedded systems
AXCIOMA, the component framework for distributed, real-time and embedded systems
Component Technologies for Fractionated Satellites
Component Technologies for Fractionated Satellites
UCM Initial Submission presentation
UCM Initial Submission presentation
Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...
Remedy IT Initial Submission for the Unified Component Model (UCM) for Distri...
Unified Component Model for Distributed, Real- Time and Embedded Systems Requ...
Unified Component Model for Distributed, Real- Time and Embedded Systems Requ...
Request For Proposal Unified Component Model for Distributed, Real-Time and E...
Request For Proposal Unified Component Model for Distributed, Real-Time and E...
Test What Matters Most
Test What Matters Most
IDL to C++03 RFC
IDL to C++03 RFC
F6COM: A Case Study in Extending Container Services through Connectors
F6COM: A Case Study in Extending Container Services through Connectors
Draft Request For Proposal Unified Component Model for Distributed, Real-Time...
Draft Request For Proposal Unified Component Model for Distributed, Real-Time...
Test What Matters Most
Test What Matters Most
Component Based Model Driven Development of Mission Critical Defense Applicat...
Component Based Model Driven Development of Mission Critical Defense Applicat...
Remedy IT Flyer_introduction
Remedy IT Flyer_introduction
Recently uploaded
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DianaGray10
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Juan lago vázquez
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Product Anonymous
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
The Digital Insurer
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
Sandro Moreira
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
rafiqahmad00786416
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
Zilliz
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
danishmna97
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Jago de Vreede
Architecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
Dropbox
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Jeffrey Haguewood
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
UiPathCommunity
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Zilliz
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
Zilliz
Recently uploaded
(20)
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Architecting Cloud Native Applications
Architecting Cloud Native Applications
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
CORBA Programming with TAOX11/C++11 tutorial
1.
CORBA Programming with TAOX11 The C++11
CORBA Implementation
2.
TAOX11: the CORBA Implementation
by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy to use Greatly reduces the CORBA learning curve Reduces common user mistakes Improves application stability and reliability Significant improvement of run-time performance CORBA AMI support Extended suite of unit tests and examples Copyright © Remedy IT2
3.
TAOX11 Commercial CORBA implementation
by Remedy IT Compliant with the OMG IDL to C++11 language mapping IDL compiler with front end supporting IDL2, IDL3, and IDL3+ Free evaluation versions available from our software support portal ! More details on https://taox11.remedy.nl/ 3 Copyright © Remedy IT
4.
Tutorial overview This tutorial
gives an overview of the IDL to C++11 language mapping Introduces TAOX11, the C++11 CORBA implementation by Remedy IT It assumes basic understanding of IDL and CORBA 4 Copyright © Remedy IT
5.
Introduction 5 Copyright ©
Remedy IT
6.
Problems with IDL
to C++ The IDL to C++ language mapping is from the 90’s IDL to C++ could not depend on various C++ features as • C++ namespace • C++ exceptions • Standard Template Library As a result the IDL to C++ language mapping • Is hard to use correctly • Uses its own constructs for everything 6 Copyright © Remedy IT
7.
Why a new
language mapping? IDL to C++ language mapping is impossible to change because • Multiple implementations are on the market (open source and commercial) • A huge amount of applications have been developed An updated IDL to C++ language mapping would force all vendors and users to update their products The standardization of a new C++ revision in 2011 (ISO/IEC 14882:2011, called C++11) gives the opportunity to define a new language mapping • C++11 features are not backward compatible with C++03 or C++99 • A new C++11 mapping leaves the existing mapping intact 7 Copyright © Remedy IT
8.
Goals of IDL
to C++11 Simplify mapping for C++ Make use of the new C++11 features to • Reduce amount of application code • Reduce amount of possible errors made • Gain runtime performance • Speedup development and testing Faster time to market Reduced costs Reduced training time 8 Copyright © Remedy IT
9.
OMG Specification IDL to
C++11 v1.3 available from the OMG website at http://www.omg.org/spec/CPP11/ Revision Task Force (RTF) is active to work on issues reported 9 Copyright © Remedy IT
10.
IDL Constructs 10 Copyright
© Remedy IT
11.
Modules An IDL module
maps to a C++ namespace with the same name module M { // definitions }; module A { module B { // definitions }; }; IDL C++11 namespace M { // definitions }; namespace A { namespace B { // definitions }; }; 11 Copyright © Remedy IT
12.
Basic Types IDL C++11
Default value short int16_t 0 long int32_t 0 long long int64_t 0 unsigned short uint16_t 0 unsigned long uint32_t 0 unsigned long long uint64_t 0 float float 0.0 double double 0.0 long double long double 0.0 char char 0 wchar wchar_t 0 boolean bool false octet uint8_t 0 12 Copyright © Remedy IT
13.
Constants IDL constants are
mapped to C++11 constants using constexpr when possible const string name = "testing"; interface A { const float value = 6.23; }; IDL C++11 const std::string name {"testing"}; class A { public: static constexpr float value {6.23F}; }; 13 Copyright © Remedy IT
14.
String Types No need
to introduce an IDL specific type mapping but leverage STL string name; wstring w_name; IDL C++11 std::string name {“Hello”}; std::wstring w_name; std::cout << name << std::endl; 14 Copyright © Remedy IT
15.
Enumerations IDL enums map
to C++11 strongly typed enums enum Color { red, green, blue }; IDL C++11 enum class Color : uint32_t { red, green, blue }; Color mycolor {Color::red}; if (mycolor == Color::red) { std::cout << “Correct color”; } else { std::cerr << “Incorrect color “ << mycolor << std::endl; } 15 Copyright © Remedy IT
16.
Sequence IDL unbounded sequence
maps to std::vector typedef sequence<long> LongSeq; typedef sequence<LongSeq, 3> LongSeqSeq; IDL C++11 typedef std::vector <int32_t> LongSeq; typedef std::vector <LongSeq> LongSeqSeq; LongSeq mysequence; // Add an element to the vector mysequence.push_back (5); // Dump using C++11 range based for loop for (const int32_t& e : mysequence) { std::cout << e << “;” << std::end; } 16 Copyright © Remedy IT
17.
Struct (1) IDL struct
maps to a C++ class with copy and move constructors/assignment operators and accessors struct Variable { string name; }; IDL C++11 class Variable { public: Variable (); ~Variable (); Variable (const Variable&); Variable (Variable&&); Variable& operator= (const Variable& x); Variable& operator= (Variable&& x); explicit Variable (std::string name); void name (const std::string& _name); void name (std::string&& _name); const std::string& name () const; std::string& name (); }; namespace std { template <> void swap (Variable& m1, Variable& m2); }; 17 Copyright © Remedy IT
18.
Struct (2) IDL struct
maps to a C++ class with copy and move constructors/assignment operators and accessors struct Variable { string name; }; IDL C++11 Variable v; Variable v2 (“Hello”); std::string myname {“Hello”}; // Set a struct member v.name (myname); // Get a struct member std::cout << “name” << v.name () << std::endl; if (v != v2) { std::cerr << “names are different” <<std::endl; } 18 Copyright © Remedy IT
19.
Array IDL array map
to C++11 std::array typedef long L[10]; typedef string V[10]; typedef string M[1][2][3]; IDL C++11 typedef std::array <int32_t, 10> L; typedef std::array <std::string, 10> V; typedef std::array <std::array <std::array <std::string, 3>, 2>, 1> M; // Initialize the array F f = { {1, 2, 3, 4, 5} } // Check the size of an array if (f.size () != 5) 19 Copyright © Remedy IT
20.
Reference Types (1) An
IDL interface maps to so called reference types Reference types are reference counted, for example given type A • Strong reference type behaves like std::shared_ptr and is available as IDL::traits<A>::ref_type • Weak reference type behaves like std::weak_ptr and is available as IDL::traits<A>::weak_ref_type A nil reference type is represented as nullptr Invoking an operation on a nil reference results in a INV_OBJREF exception 20 Copyright © Remedy IT
21.
Reference Types (2) Given
IDL type A the mapping delivers IDL::traits<A> with type traits interface A { // definitions }; IDL C++11 // Obtain a reference IDL::traits<A>::ref_type a = // .. obtain a // reference // Obtain a weak reference IDL::traits<A>::weak_ref_type w = a.weak_reference(); // Obtain a strong reference from a weak one IDL::traits<A>::ref_type p = w.lock (); if (a == nullptr) // Legal comparisons if (a != nullptr ) // legal comparison if (a) // legal usage, true if a != nullptr if (!a) // legal usage, true if a == nullptr if (a == 0) // illegal, results in a compile // error delete a; // illegal, results in a compile error 21 Copyright © Remedy IT
22.
Reference Types (3) Reference
types can only be constructed using CORBA::make_reference interface A { // definitions }; IDL C++11 // Servant implementation class class A_impl final : public CORBA::servant_traits<A>::base_type { } // Create a servant reference using // make_reference CORBA::servant_traits<A>::ref_type a_ref = CORBA::make_reference<A_impl> (); // We could use new, but the resulting // pointer can’t be used for making any // CORBA call because the pointer can’t be // used to construct a reference type which // is the only thing the API accepts A_impl* p = new ACE_impl (); // Or we can obtain a reference from another // method IDL::traits<A>::ref_type = foo->get_a (); 22 Copyright © Remedy IT
23.
Reference Types (4) Widening
and narrowing references interface A { // definitions }; interface B : A { // definitions }; IDL C++11 IDL::traits<B>::ref_type bp = ... // Implicit widening IDL::traits<A>::ref_type ap = bp; // Implicit widening IDL::traits<Object>::ref_type objp = bp; // Implicit widening objp = ap; // Explicit narrowing bp = IDL::traits<B>::narrow (ap) 23 Copyright © Remedy IT
24.
Argument Passing Simplified rules
for argument passing compared to IDL to C++ No need for new/delete when passing arguments The C++11 move semantics can be used to prevent copying of data Given an argument of A of type P: • In: for all primitive types, enums, and reference types, the argument is passed as P. For all other types, the argument is passed as const P& • Inout: passed as P& • Out: passed as P& • Return type: returned as P 24 Copyright © Remedy IT
25.
IDL Traits For each
IDL type a IDL::traits<> specialization will be provided The IDL traits contain a set of members with meta information for the specific IDL type The IDL traits are especially useful for template meta programming Copyright © Remedy IT25
26.
Implement Interfaces Given a
local interface A the implementation has to be derived from IDL::traits<A>::base_type Given a regular interface A the CORBA servant implementation has to be derived from CORBA::servant_traits<A>::base_type In both cases a client reference is available as IDL::traits<A>::ref_type Copyright © Remedy IT26
27.
CORBA AMI TAOX11 has
support for the callback CORBA AMI support The TAO AMI implementation has the disadvantage that when AMI is enabled for an IDL file all users have to include the TAO Messaging library TAOX11 separates CORBA AMI into a new set of source files, a client not needing AMI doesn’t have to link any CORBA Messaging support! All sendc_ operations are member of a derived CORBA AMI stub, not part of the regular synchronous stub Copyright © Remedy IT27
28.
CORBA AMI Traits Instead
of remembering some specific naming rules a new CORBA::amic_traits<> trait has been defined Contains the concrete types as members • replyhandler_base_type: the base type for implementing the reply handler servant • replyhandler_servant_ref_type: the type for a reference to the servant of the reply handler • ref_type: the client reference to the stub with all synchronous operations Copyright © Remedy IT28
29.
CORBA AMI Example //
Obtain a regular object reference from somewhere, Test::A has one method called foo IDL::traits<Test::A>::ref_type stub = …; // Narrow the regular object reference to the CORBA AMI stub (assuming this has been // enabled during code generation CORBA::amic_traits<Test::A>::ref_type async_stub = CORBA::amic_traits<Test::A>::narrow (stub); // Assume we have a Handler class as reply handler implemented, create it and // register this as CORBA servant CORBA::amic_traits<Test::A>::replyhandler_servant_ref_type h = CORBA::make_reference<Handler> (); PortableServer::ObjectId id = root_poa->activate_object (h); IDL::traits<CORBA::Object>::ref_type handler_ref = root_poa->id_to_reference (id); CORBA::amic_traits<Test::A>::replyhandler_ref_type test_handler = CORBA::amic_traits<Test::A>::replyhandler_traits:::narrow (handler_ref); // Invoke an asynchronous operation, can only be done on async_stub, not on stub async_stub->sendc_foo (test_handler, 12); // But we can also invoke a synchronous call async_stub->foo (12); Copyright © Remedy IT29
30.
Valuetypes Valuetypes are mapped
to a set of classes which are accessible through the IDL::traits<> • IDL::traits<>::base_type provides the abstract base class from which the valuetype implementation could be derived from • IDL::traits<>::obv_type provides the object by value class that implements already all state accessors and from which the valuetype implementation can be derived from • IDL::traits<>::factory_type provides base class for the valuetype factory implementation Copyright © Remedy IT30
31.
Example CORBA application 31
Copyright © Remedy IT
32.
CORBA Hello world interface
Hello { /// Return a simple string string get_string (); /// A method to shutdown the server oneway void shutdown (); }; IDL 32 Copyright © Remedy IT
33.
CORBA client int main(int
argc, char* argv[]) { try { // Obtain the ORB IDL::traits<CORBA::ORB>::ref_type orb = CORBA::ORB_init (argc, argv); // Create the object reference IDL::traits<CORBA::Object>::ref_type obj = orb->string_to_object ("file://test.ior"); // Narrow it to the needed type IDL::traits<Test::Hello>::ref_type hello = IDL::traits<Test::Hello>::narrow (obj); // Invoke a method, invoking on a nil reference will result in an exception std::cout << "hello->get_string () returned " << hello->get_string () << std::endl; // Shutdown the server hello->shutdown (); // Cleanup our ORB orb->destroy (); } catch (const std::exception& e) { // All exceptions are derived from std::exception std::cerr << "exception caught: " << e.what () << std::endl; } return 0; } 33 Copyright © Remedy IT
34.
CORBA servant C++11 CORBA
servant for type T must be derived from CORBA::servant_traits<T>::base_type class Hello final : public CORBA::servant_traits<Test::Hello>::base_type { public: // Constructor Hello (IDL::traits<CORBA::ORB>::ref_type orb) : orb_ (orb) {} // Destructor virtual ~Hello () {} // Implement pure virtual methods from the base_type virtual std::string get_string () override { return “Hello!”; } virtual void shutdown () override { this->orb_->shutdown (false); } private: // Use an ORB reference to shutdown the application. IDL::traits<CORBA::ORB>::ref_type orb_; }; 34 Copyright © Remedy IT
35.
CORBA server (1) int
main(int argc, char* argv[]) { try { // Obtain our ORB IDL::traits<CORBA::ORB>::ref_type orb = CORBA::ORB_init (argc, argv); // Obtain our POA and POAManager IDL::traits<CORBA::Object>::ref_type obj = orb->resolve_initial_references ("RootPOA"); IDL::traits<PortableServer::POA>::ref_type root_poa = IDL::traits<PortableServer::POA>::narrow (obj); IDL::traits<PortableServer::POAManager>::ref_type poaman = root_poa->the_POAManager (); // Create the servant CORBA::servant_traits<Test::Hello>::ref_type hello_impl = CORBA::make_reference<Hello> (orb); // Activate the servant as CORBA object PortableServer::ObjectId id = root_poa->activate_object (hello_impl); IDL::traits<CORBA::Object>::ref_type hello_obj = root_poa->id_to_reference (id); IDL::traits<Test::Hello>::ref_type hello = IDL::traits<Test::Hello>::narrow (hello_obj); // Put the IOR on disk std::string ior = orb->object_to_string (hello); std::ofstream fos("test.ior"); fos << ior; fos.close (); 35 Copyright © Remedy IT
36.
CORBA server (2) //
Activate our POA poaman->activate (); // And run the ORB, this method will return at the moment the ORB has been shutdown orb->run (); // Cleanup our resources root_poa->destroy (true, true); orb->destroy (); } catch (const std::exception& e) { // Any exception will be caught here std::cerr << "exception caught: " << e.what () << std::endl; } return 0; } 36 Copyright © Remedy IT
37.
Auto specifier C++11 has
support for auto as new type specifier The compiler will deduce the type of a variable automatically from its initializers Will simplify the CORBA example further Copyright © Remedy IT37
38.
CORBA client int main(int
argc, char* argv[]) { try { // Obtain the ORB auto orb = CORBA::ORB_init (argc, argv); // Create the object reference auto obj = orb->string_to_object ("file://test.ior"); // Narrow it to the needed type auto hello = IDL::traits<Test::Hello>::narrow (obj); // Invoke a method, invoking on a nil reference will result in an exception std::cout << "hello->get_string () returned " << hello->get_string () << std::endl; // Shutdown the server hello->shutdown (); // Cleanup our ORB orb->destroy (); } catch (const std::exception& e) { // All exceptions are derived from std::exception std::cerr << "exception caught: " << e.what () << std::endl; } return 0; } 38 Copyright © Remedy IT
39.
CORBA servant C++11 CORBA
servant for type T must be derived from CORBA::servant_traits<T>::base_type class Hello final : public CORBA::servant_traits<Test::Hello>::base_type { public: // Constructor Hello (IDL::traits<CORBA::ORB>::ref_type orb) : orb_ (orb) {} // Destructor virtual ~Hello () {} // Implement pure virtual methods from the base_type virtual std::string get_string () override { return “Hello!”; } virtual void shutdown () override { this->orb_->shutdown (false); } private: // Use an ORB reference to shutdown the application. IDL::traits<CORBA::ORB>::ref_type orb_; }; 39 Copyright © Remedy IT
40.
CORBA server (1) int
main(int argc, char* argv[]) { try { // Obtain our ORB auto _orb = CORBA::ORB_init (argc, argv); // Obtain our POA and POAManager auto obj = _orb->resolve_initial_references ("RootPOA"); auto root_poa = IDL::traits<PortableServer::POA>::narrow (obj); auto poaman = root_poa->the_POAManager (); // Create the servant auto hello_impl = CORBA::make_reference<Hello> (orb); // Activate the servant as CORBA object auto id = root_poa->activate_object (hello_impl); auto hello_obj = root_poa->id_to_reference (id); auto hello = IDL::traits<Test::Hello>::narrow (hello_obj); // Put the IOR on disk auto ior = orb->object_to_string (hello); std::ofstream fos("test.ior"); fos << ior; fos.close (); 40 Copyright © Remedy IT
41.
CORBA server (2) //
Activate our POA poaman->activate (); // And run the ORB, this method will return at the moment the ORB has been shutdown orb->run (); // Cleanup our resources root_poa->destroy (true, true); orb->destroy (); } catch (const std::exception& e) { // Any exception will be caught here std::cerr << "exception caught: " << e.what () << std::endl; } return 0; } 41 Copyright © Remedy IT
42.
Tips & Tricks Don’t
use new/delete Use pass by value together with C++11 move semantics 42 Copyright © Remedy IT
43.
Conclusion C++11 simplifies CORBA
programming The combination of reference counting and C++11 move semantics make the code much safer and secure Application code is much smaller and easier to read 43 Copyright © Remedy IT
44.
Want to know
more? Look at the TAOX11 website at https://taox11.remedy.nl/ Check the Remedy IT provided examples at https://github.com/RemedyIT/idl2cpp11 Request your free-of-charge evaluation license, see https://swsupport.remedy.nl/ Contact us, see https://www.remedy.nl/ 44 Copyright © Remedy IT
45.
Contact Copyright © Remedy
IT45 Remedy IT Postbus 81 6930 AB Westervoort The Netherlands tel.: +31(0)88 053 0000 e-mail: sales@remedy.nl website: https://www.remedy.nl/ Twitter: @RemedyIT Slideshare: RemedyIT Subscribe to our mailing list
Download now