Recipe-Driven DDS Data Sample Interpreter
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing Data Distribution Service (DDS) systems face challenges in maintaining performance and code size while efficiently manipulating data samples, as they either suffer from large code generation and maintainability issues with functional data sample manipulation or performance inefficiencies with type-description-driven interpreted approaches.
Innovation Solution
The method involves generating recipes for bidirectional conversion between memory and network representations of data samples using TypeDescriptions and language binding information, allowing for optimized data sample manipulation that is independent of target language bindings and capable of handling different network representations and optimization levels.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Speed
If functional data sample manipulation is used, then performance is improved, but code size and maintainability deteriorate
Solution Approach 1:
The patent segments the data sample manipulation process into two distinct phases: code generation phase (where type-specific functions are created) and execution phase (where pre-generated functions are called). This segmentation allows the system to achieve functional manipulation performance during execution while keeping the actual code generation logic separate and manageable, thus reducing maintainability burden.
Solution Approach 2:
The patent applies preliminary action by generating type-specific manipulation functions before the actual data sample processing occurs. The code generator creates optimized functions during a preliminary phase, and these pre-generated functions are then executed during runtime. This eliminates the need for complex runtime code generation, improving both performance and maintainability.
2Device complexity
If type-description-driven interpreted data sample manipulation is used, then code size and maintainability are improved, but performance deteriorates
Solution Approach 1:
The patent generates type-specific manipulation functions during a preliminary code generation phase, then executes these pre-generated functions during runtime. This preliminary action eliminates the need for complex runtime interpretation, achieving both small code size and high performance by having optimized functions ready before execution.
Solution Approach 2:
The patent uses code generation to create copies of optimized manipulation functions for each data type. Instead of interpreting a generic type description at runtime, the system has pre-generated specific functions that mirror the optimal implementation for each type, thus achieving functional performance with maintained code simplicity.
3Reliability
If existing DDS systems use traditional data sample manipulation, then reliability is maintained, but execution time and communication latency increase
Solution Approach 1:
The patent generates optimized type-specific manipulation functions during a preliminary phase, then executes these pre-generated functions during runtime. This preliminary code generation eliminates runtime interpretation overhead, reducing execution time and communication latency while maintaining the reliability of type-safe data manipulation through generated functions that directly implement the type structure.
Data Source
AI summary
A bidirectional conversion method is provided between a memory representation and a network representation of data samples associated with a DDS type in a system using an Object Management Group DDS and a Real-Time Publish Subscribe (RTPS) protocol that is more potent, maintainable, and with a smaller footprint. A first conversion recipe is generated using a type description and a language binding information that transforms any data sample associated with the type description from a first memory representation to a network representation, and this first conversion recipe is generated only once. A second conversion recipe is generated using a type description and language binding information that transforms any data sample associated with the type description from the network representation to a second memory representation, and this second conversion recipe is generated only once. Both generated first and second conversion recipes are then executed on all data samples.


