DDS Connector Sept, 2016

DDS Connector Sept, 2016

DDS Connector Sept, 2016 Gianpiero Napoli, Senior Software Engineer Agenda ● Goals ● Concept ● Architecture ● Status ● Demo ● Next Steps 2015 © Real-Time Innovations Inc. Connector Goals ● Faster (“Rapid”) ○ Development ○ Integration ○ Troubleshooting ● Integrate ○ Connectivity technologies ○ Scripting ● Simplify ○ API, Configuration, Options ● Preserve Data-Oriented Design|Architecture 2015 © Real-Time Innovations Inc. The Connector Model What? Connector Concept Component Component “Connection” (a.k.a. App) Connectivity (a.k.a. App) Middleware Connector “connects” components (apps) via some connectivity middleware 2015 © Real-Time Innovations Inc. Connector Facilitates Integration “Connection” Connectivity Middleware Y Component “Connection” “Connection” Connectivity Connectivity Middleware Middleware (a.k.a. App) X X “Connection” X = DDS Connectivity Y = Web Middleware etc.. Y 2015 © Real-Time Innovations Inc. Connectors Speed Up Integration Connection X Connection Y 2015 © Real-Time Innovations Inc. Connector ● connects your app to a data space (DDS) ● exposes a data-centric API ● lets your app read/write structured data 2015 © Real-Time Innovations Inc. A Connector has Input & Output ports Connector Input Data Port Output Data Port Input Output 2015 © Real-Time Innovations Inc. Connectors have a data-centric API Connector config Input Data Port Output Data Port input() wait() / on() output() read() / take() write() / dispose() / unregister() samples[] clear_members() infos[] instance 2015 © Real-Time Innovations Inc. Connectors have a data-centric API Connector config Input Data Port Output Data Port input() wait() / on() output() read() / take() write() / dispose() / unregister() samples[] clear_members() User instance Defined Structure 2015 © Real-Time Innovations Inc. DDS Connector Input & Output ports Connector (DomainParticipant+) config.xml Input Data Port Output (DataReader+) Data Port input() (DataWriter+) wait() / on() output() read() / take() write() / dispose() / unregister() samples[] clear_members() User instance Defined Structure XML Config 2015 © Real-Time Innovations Inc. DDS Connector Service Other Config Connectivity Technology Connector API lua Service DOI javascript python (Stateful) C java? Service C++? Adapter : App DDS RTI Connext Connector Types DDS DDS Topics Publisher | Subscriber QoS Endpoints API = Application Programming Interface DOI = Data-Oriented Interface 2015 © Real-Time Innovations Inc. DDS Connector Service Other Config Connectivity Technology Connector API Service DOI writer() write()/dispose() (Stateful) reader() Service read()/take() Adapter App DDS RTI Connext Connector Types DDS DDS Topics Publisher | Subscriber QoS wait() / on() Endpoints Custom Service API API = Application Programming Interface DOI = Data-Oriented Interface 2015 © Real-Time Innovations Inc. DDS Connector Software Stack javascript python lua node.js connector.js connector.py Prototyper + lua DDS C libffi Connector connector.c (rti_dds_connector.so) RTI Connext DDS 2015 © Real-Time Innovations Inc. Current Status Embedded within rtiddsprototyper binary included in the Experimental RTI Connext DDS product (research, early adopters) javascript python lua node.js connector.js connector.py connector.lua DDS C libffi Connector connector.c (rti_dds_connector.so) RTI Connext DDS 2015 © Real-Time Innovations Inc. DDS Connector Configuration ● XML Based App Creation ● Participant ○ Types ○ QoS ○ Endpoints Output Data Input Port Port QoS Type Type Data Type Objects Output Data Data Writer Topic Name Input Reader Name Name QoS QoS 2015 © Real-Time Innovations Inc. Using a Connector: Pseudo Code Creating a Connector connector = new Connector(“participant_name”, “config.xml”) Reading Data Writing Data input = connector.getInput(“in_name”) output = connector.getOutput(“out_name”) input.take() output.instance.setNumber(“x”, 10.0) length = input.samples.getLength(input) output.write() for (i = 1; i <= length; ++i) { if connector.infos(i).isValid then { print(connector.samples(i)) } } 2015 © Real-Time Innovations Inc. Integrating DDS & Web Technologies “Connection” Connectivity Middleware RESTful: HTTP, Websockets,HTML5 nodejs JavaScript “Connection” “Connection” Component Connectivity Connectivity Middleware Middleware DDS DDS (node.js App) nodejs “Connection” Connectivity Middleware RESTful: HTTP, WebSockets, HTML5 2015 © Real-Time Innovations Inc. Demo Common Use Cases ● Integration ○ Middleware technologies ○ DDS Domain Bridging ● I/O ○ Device / Hardware ○ Web APIs and Services ● UIs ○ GUI Toolkits ○ Web Based ● Information Processing ○ Use various processors, eg Rx? ○ Integrate with CEP engines? ● ... 2015 © Real-Time Innovations Inc. Use Case: Integrating DDS and Web ● Standard Thin Client (without DDS) ○ Real-Time Web ■ push using websockets (using socket.io) ○ Browser, Mobile, Handheld ■ no special software installation ● Custom Thin Client (with DDS) ○ HTML5 GUI using nw.js ○ +Plus the capabilities of Real-Time Web ○ +Plus the capabilities of DDS (state management) 2015 © Real-Time Innovations Inc. Connector is Experimental Product ● Download connector here: https://github.com/rticommunity/rticonnextdd s-connector ● More info on connector here: https://community.rti.com/downloads/experi mental/rticonnextdds-connector 2015 © Real-Time Innovations Inc. Thank You! Examples and code digging! Getting Started ● simple ○ DDS ←→ DDS ■ poll ■ event ● web_http ○ DDS ←→ HTTP ■ poll ● web_socket ○ DDS ←→ WebSockets ○ HTML5: table, chart, plugin (Google Earth) 2015 © Real-Time Innovations Inc. Data Indexing ● Prototyper with Lua Getting Started Guide ○ Section 6.4 ● NOTE ○ Prototyper = Singleton Connector + Execution Loop 2015 © Real-Time Innovations Inc. DDS Connector API Connector Input Output Data Data Port Port 2015 © Real-Time Innovations Inc. DDS Connector API 2015 © Real-Time Innovations Inc. DDS Connector for Lua - connector.lua lua connector DDS Connector for C - connector.c C connector DDS Connector for Python - connector.py python connector.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    31 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us