Hi Brian,
On Fri, May 1, 2020 at 5:02 PM Brian Michael <[email protected]> wrote: > > Hello, > > I was curious about some of the capabilities of Celix. In particular the RSA > and PubSub implementations. Could you inform me of the following items: > - Is Celix setup to perform PubSub between Java and C/C++? I see the > documentation says it is setup similar to the RSA implementation, however I’m > unsure if the Amdatu remote bundles can be used here. Celix RSA has been designed to be compatible with Amdatu Remote Services. In the current situation it is not compatible anymore. Although we are busy - at the company I am working at - to align this again, the changes need to be made for Amdatu have not been donated back yet. > - Can Celix pass streams between Java and C/C++ through RSA? I am not sure what you mean with streams, but the idea is that Java class and C structs should be transferable between C <-> Java. > - How are C structs handled when passed from Celix to Java? I imagine > this is transformed to classes but would like verification. C struct are handled by the serialization services. Currently Celix uses the approach of descriptor files combined with libffi. Descriptor files are concise files describing the memory layout of a C struct and this is used in combination with libffi (foreign function interface) [1] to create a short of reflection capabilities in C. This is done in the celix library libdfi (dynamic function interface). An important part that is missing and currently not part of Celix is generating C structs (header files) and their compatible descriptor files, so that they can be used for remote service / pubsub. Again we - at the company I am working at - are busy creating something for this, but this is also not publicly available yet. Note that this solution does not only generation C struct, but also a matching Java classes. There is also a discussion going whether we should continue with the heavy focus on descriptors or move more towards supporting custom serialisation services. The latter is maybe also a way to more easily incorporate existing code generation & serialization options (think avro, protobuf, etc) [2]. > - Has Avro testing been performed on the Java side for RSA between C to > Java and how is that set up? No, not yet. Again - at the company I am working with - we are busy with this. Currently we work with JSON, but we want to move towards avro. Probably not really the answers you were hoping for, but hopefully this gives a better idea were we stand. [1] https://sourceware.org/libffi/ [2] https://github.com/apache/celix/pull/185 Greetings, Pepijn
