You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@celix.apache.org by Brian Michael <br...@gmail.com> on 2020/05/01 14:39:54 UTC

Questions

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. 
    - Can Celix pass streams between Java and C/C++ through RSA?
    - How are C structs handled when passed from Celix to Java? I imagine this is transformed to classes but would like verification. 
    - Has Avro testing been performed on the Java side for RSA between C to Java and how is that set up?

Thanks,
Brian

Sent from my iPhone

Re: Questions

Posted by Pepijn Noltes <pe...@gmail.com>.
Hi Brian,


On Fri, May 1, 2020 at 5:02 PM Brian Michael <br...@gmail.com> 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