
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.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages31 Page
-
File Size-