Hi ChaiShushan
I have looked into your c++ implementation and I really like the fact that it is portable. The POSIX components do not compile, but it was easy to fix, some names were wrong in rpc_posix_conn.cc.
The software boss in our company likes standards and is trying to make a crew of software engineers with limited experience go from an almost monolithic structure into implementing their own services using DDS. We use Windows for a near real-time application (oh no).
I am working on a project in my spare time, where I have used a simple C protocol allowing me set set remote parameters and execute remote functions. I wan't to use Kenton Vardas capnproto, but I would also like it to be cross-platform and cannot wait for this to be started.
I really like your solution, except for the fact, that I would like not to change protoc (introduce return arguments for Services, remove the Closure concept, etc.) and be in sync with the main protocol buffers development. Another thing that I would to have is that all threads are outside the library and I can use a shared thread pool. I have sort of stolen some of your ideas and some ideas from Kenson Varda.
Some questions:
1) Are you still developing on this branch and do you think there is a possibility that you work will be part of the official protocol buffers?
2) If you want to shutdown a server using a remote procedure you somehow need to exit the loop. I have implemented this in a command protocol, where a new callback is registered using the Closure concept. It is sort of hack, because one service is the able to shutdown others. Do you have any good ideas on how to implement this?
3) What is your opinion about Captain Proto. Do you think it will become a standard for RPC?
The reason for I would like to be in sync with protocol buffers is that we use for other stuff.