Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

eProsima RPC over DDS - Connext Conf London October 2015

919 views

Published on

Small Presentation of eProsima RPC over DDS, for more information please visit www.eprosima.com

Published in: Software
  • Be the first to comment

eProsima RPC over DDS - Connext Conf London October 2015

  1. 1. eProsima RPC over DDS for RTI Connext DDS Connext Conference, London 2015 15/10/2015 Jaime Martin Losa CTO eProsima JaimeMartin@eProsima.com +34 607 91 37 45 www.eProsima.com
  2. 2. Old solution: Manual 2 Struct FunRequest { RequestID; RequestParameter1; /* ... */ RequestParameterN; }; Struct FunReply { RequestID; ReplyResult1; /* ... */ ReplyResultN; };
  3. 3. RPC over DDS Standard: Automatic 3 interface MyInterface { funReturnValueType Fun(in MyTypeI1 m1,in MyTypeI2 m2,..., out MyTypeO1 n1, out MyTypeO2 n2,..., inout MyType1 l1,inout MyType2 l2 ); /* ... */ };
  4. 4. Architecture Request Topic Reply Topic ClientApp Publisher Subscriber STUB Requester ServiceApp Publisher Subscriber Skeleton Replier Resource Aware Dispatching Agent Global Data Space 4
  5. 5. Definition of the Services
  6. 6. Definition of the services  OMG IDL 3.5 + DDS-XTYPES is used – “Any” and “valuetype” not part of DDS-XTYPES  Exceptions supported  Atributes in the interfaces ignored  Oneway invocations supported throught the IDL oneway keyword 6
  7. 7. eProsima RPC over DDS for RTI Connext DDS
  8. 8. eProsima RPC over DDS Features  Open Source: LGPL – Published on GitHub  Windows and Linux support (32 and 64 bits)  Project and makefile generation for VS2010-3 & gcc 4.x  Synchronous, asynchronous and one way operations  Different Server threading models  100% Standard: ISO C++ and OMG DDS  Comprehensive documentation
  9. 9. eProsima RPC over DDS  Available on: – eProsima.com web site:  http://www.eprosima.com/index.php/products-all/eprosima- rpc-over-dds-all – eProsima GitHub:  https://github.com/eprosima
  10. 10. Example
  11. 11. Hands On: Calculator  Create Calculator.idl  Generate Interface Support : /////////////////////////// // Connext Con Example // /////////////////////////// exception divideByZeroEx{ long count; }; interface Calculator { float multiply(in float a,in float b); float divide(in float a,in float b) raises(divideByZeroEx); }; rpcddsgen -ppDisable -example x64Win64VS2013 Calculator.idl
  12. 12. Hands On: Calculator  Edit the Example: CalculatorClientExample.cxx // Call to remote procedures try { return_ = proxy->multiply(16, 2); // multiply std::cout << return_ << std::endl; return_ = proxy->divide(16, 2); // divide std::cout << return_ << std::endl; return_ = proxy->divide(16, 0); // user exception std::cout << return_ << std::endl; } catch (divideByZeroEx &ex) { std::cout << "divideByZeroEx" << std::endl; } catch (SystemException &ex) { std::cout << "System Exception:" << std::endl; }
  13. 13. Hands On: Calculator  Edit the CalculatorServerImplExample.cxx DDS_Float CalculatorServerImplExample::multiply (/*in*/ DDS_Float a, /*in*/ DDS_Float b) { DDS_Float return_ = a*b; return return_; } DDS_Float CalculatorServerImplExample::divide (/*in*/ DDS_Float a, /*in*/ DDS_Float b) { DDS_Float return_ = 0.0; if (b == 0) { throw divideByZeroEx(); } return_ = a / b; return return_; }
  14. 14. Thank you! Jaime Martin Losa CTO eProsima JaimeMartin@eProsima.com +34 607 91 37 45 www.eProsima.com

×