Comments (3)
The description above is not completely accurate.
Serde is used for serialising application (payload) data, whose structure we do not know beforehand. Serde's derive macro is very handy here. DDS default serialisation format for application data is CDR, so we provide an implementation for that. We have SerializerAdapter
and DeserializerAdapter
traits to decouple Serde from RustDDS. I think the application data could be (de)serialised completely without Serde, if the adapters are used to attach some other serialiser library in Serde's place. We are still dependent in Serde in serialising the built-in Discovery data.
Speedy is used to process the RTPS protocol headers and other control data. These have fixed content and format. Some parts of the protocol cannot be independently decoded by Speedy, so some of the implementations are hand-written. Mostly because submessage contents cannot be decoded without looking at some flags from submessage header, which is decoded separately.
Now that I think of it, Speedy could be used better by restructuring the submessages: Instead of keeping submessage header and body separate (neighbouring fields in a struct), the data should be restructured so that we always decode the submessage as one unit, both header and body. Then we have the header flags locally available to decode the body. Submessage header is just one machine word in size.
While I understand the architectural goal of separating logical representation from the wire format, I see little gain in doing that all over the place. Most of the data items are too simple to gain significant benefit from that.
from rustdds.
fair enough. thanks for the detailed response. Maybe I should just close this until there are some more concrete requirements for the serialisation. Where do you see this going? or are you happy with the current approach?
from rustdds.
I am quite happy with the current status. If you spot similar redundancy or C++ leftovers as there were with ReliabilityKind
, then those could be cleaned away, but I see nothing major here.
from rustdds.
Related Issues (20)
- thread 'RustDDS Participant 0 event loop' panicked at 'split_to out of bounds: 28 <= 24' HOT 1
- thread 'RustDDS Participant 0 event loop' panicked at 'split_off out of bounds: 54 <= 32' HOT 3
- A panic with sequence numbers on rediscovery
- Poorly handled errors when deserializing related_sample_identity HOT 2
- Malformed locator triggers panic while the port field is being unwrapped HOT 2
- Malformed `readerSNState` in ACKNACK submessage triggers panic (add overflow) HOT 2
- Remotely reachable `todo!()`s HOT 2
- panic due to a malformed INFO_REPLY submessage HOT 2
- busy looping on DataReader.take() HOT 6
- Bug in the example code shape_demo_mio_08? HOT 1
- Durable writer only keeps/sends samples written after some time HOT 3
- How to tell if a discovered topic is for a reader or writer HOT 3
- Derive serde::{Deserialize, Serialize} for QosPolicies HOT 1
- Access SampleInfo from async reader interface HOT 1
- Sample source timestamp not preserved for separate domain participants HOT 2
- Reliable reader delayed reception of FastDDS shapes HOT 4
- Why does my subscriber miss the first 2 published samples? HOT 5
- Reception lag of 2 samples with some QoS settings HOT 3
- Interoperability problem with OpenDDS Shapes demo HOT 4
- On mac air with m1 chip , find cannot bind the request address HOT 1
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 rustdds.