Comments (2)
Hello,
I feel I should thank you for running into this problem π. As always, things with a long history can have their idiosyncracies, and this code is no exception. I suppose in the case of Cyclone, the biggest one is that it approaches RTPS (beware though, I tend to call it DDSI but it refers to the same spec) from a slightly different direction than the spec itself does! That said, the concepts do exist, even if sometimes they came out a little bit differently. (Or sometimes, just named a bit differently.)
So ... the answer to your question is: do as you did and ask!
In the case of the history caches, in Cyclone they are implemented as part of the "ddsc" code, not so much as part of the "ddsi" code. Most of the implementation of these history caches really is protocol independent, and in a multi-protocol implementation it arguably makes sense to have the implementation of the history caches as part of the "core DDS" code. Cyclone currently only supports one, but there is no reason to limit it to that one protocol. For example, OpenSplice has another protocol as well, one that is even older than the DCPS specification, and for some use cases DDSI is best, and for others the old one is best. Hence this decision.
The interface the DDSI code requires is defined in DDSI and exported via some type definitions and function pointers, and you basically plug-in the history cache implementations. Now, the plugging-in is a little rough still, but it doesn't take that much effort to clean it up to the point where each data writer and each data reader can have its own history cache implementation. Being able to do this has some big advantages: experience shows that DDS is often used as a simple messaging system (ROS2 is an excellent example, treating it as a simple queue), but in that case many of the complications in the history cache implementation are not needed and a much smaller and faster implementation can easily be written.
(The CacheChange of DDSI is roughly equivalent to the "serdata" of Cyclone, though it doesn't contain, e.g., the sequence number. Reason? Complicated! π But because of that, on the writing side it ends up as a "whc_node" in the writer history cache implementation and a "whc_borrowed_sample" in its interface to DDSI code; and on the reader side it is done a little differently because the reader history cache doesn't require the sequence number.)
from cyclonedds.
No further comments for a long time, so closing.
from cyclonedds.
Related Issues (20)
- Is there a way to replicate the deserialization mechanism used in Cyclone DDS, such as the pycdr2 library, but in the C programming language? HOT 2
- Issues with using Zenoh_bridge_dds to route data between domains HOT 9
- An implementation for dds_stream_writeLE could not be found HOT 3
- typedef in idl why not generate xxx__free() HOT 1
- CycloneDDS and eProsima Micro XRCE-DDS Communication in ROS2 HOT 6
- Allow inconsistent about DurabilityService QoS HOT 1
- Is there an implementation of Shared memory that does not through Iceoryx HOT 1
- Does CycloneDDS automatically group subscribers into multicast groups based on topic?
- Deserialization of sample failed due to reasons unknown, possibly related to a sequence HOT 29
- Two processes with the same language can communicate, but two processes with two different languages ββcannot communicate HOT 4
- How to subscribe to multiple topics?
- The dds_get_matched_subscription_data function be called in publication_matched listener, It can't get proxy reader's information HOT 3
- Malformed packets when streaming large messages over Ethernet HOT 5
- The frequency of subscription topic triggering is inconsistent with the frequency of publishing
- Provide Documentation to toggle between xcdr1 and xcdr2 ? HOT 2
- Checking handshake of a "topic" in a network? HOT 2
- How to config dds if using VLAN? HOT 1
- How to communicate with ROS2 and cyclonedds? HOT 1
- Does Data(M) carry unregister dispose information? what is the scenarios? HOT 1
- Questition: what is the ddsi2 participant for ?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cyclonedds.