Here's the task:
Imagine, we have an applications and a plug-in for it (dynamic library).
Interface between the application and the plug-in is completely defined.
Now I need to run the application and the plug-in on different computers. I wrote a stub for the plug-in on a computer where the real applications is running. And the application loads it and calls its functions like if it were a native plug-in. On the other computer there's a stub instead of the real application, which loads the native plug-in.
Now I need to organize RPCs between my stubs over the network, regardless the very transport.
Usually, it's not difficult. But there're some restrictions:
Application-plug-in interaction can be reenterable (e.g. application calls f1() from plug-in, in f1() plug-in calls g1() from application, in g1() application calls f2() from plug-in and so on...)
Any such reenteration should be executed exactly by the same thread, which started the sequence
Where can I find a cross-platform C++ RPC library with such features?