Hi,

we have a communication middleware framework in place (quite similar to ROS 
- with publish / subscribe patterns) and would like to integrate Capnproto 
for message descriptions.
For Pub / Sub itself we have classes that can send and receive binary data 
(to / from a std::string), so I'd like to build on that.
The idea is to have:

// Initialize a Publisher
Publisher<AddressBook> pub("address_book");
AddressBook::Builder addressBook = pub.getBuilder();

//manipulate the addressBook
auto people = addressBook.initPeople(2);
//...

// Send out the data
pub.Send();

So far, so good, I can send and receive data without problem.

The ecosystem, like ROS, also has recording possibilities. To be able to 
interpret data on the fly and later on, I need the capnproto reflection 
capabilities. So what I really need is to register the AddressBook (Binary) 
Schema with the framework when a publisher is created.
But from the examples I really don't understand how this can be done. My 
framework let's me store and retrieve reflection information as a 
std::string. So I feel that I have to "serialize" the Schema information 
into a string somehow, and rebuild it from a string. Since a schema also a 
.capnp description it feels like this is something that can be done, but I 
don't seem to grasp how it can be done.

So what I need is basically to implement these two functions:

template <typename T>
std::string getSchemaAsString<T>();

and

DynamicStruct::Reader getReader(const std::string& schema_string);

What I tried:

// This gives me the Schema. But is there a builder underneath? 
auto schema = capnp::Schema::from<AddressBook>();

or do I need a SchemaLoader

capnp::SchemaLoader loader;
loader.loadCompiledTypeAndDependencies<AddressBook>();

And the other question, does it make sense to work with a `
MallocMessageBuilder` when I will later send out the data in a std::string 
object, or does it make sense to Implement a `StdStringMessageBuilder`?

Any hints will be highly appreciated.

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/capnproto.

Reply via email to