
Hi all, I just thought I would announce that I've released v. 0.2 of RCF, a portable C++ IPC framework. It makes extensive use of boost, including Boost.Threads, Boost. Serialization, and the recently accepted asio library, so maybe people on this list will find it of interest :) http://www.codeproject.com/threads/Rcf_Ipc_For_Cpp.asp /Jarl.

Jarl Lindrud wrote:
Hi all,
I just thought I would announce that I've released v. 0.2 of RCF, a portable C++ IPC framework. It makes extensive use of boost, including Boost.Threads, Boost. Serialization, and the recently accepted asio library, so maybe people on this list will find it of interest :)
I would like to encourage you to work on making this library suitable for boost. Knowing how ugly such frameworks look like in other languages, eg. C#, this is great improvement and could become a great boost library too. best regards -Thorsten

Jarl Lindrud wrote:
Hi all,
I just thought I would announce that I've released v. 0.2 of RCF, a
IPC framework. It makes extensive use of boost, including Boost.Threads, Boost. Serialization, and the recently accepted asio library, so maybe people on
On Sun, 09 Apr 2006 12:33:42 +0200, Thorsten Ottosen wrote portable C++ this
list will find it of interest :)
I would like to encourage you to work on making this library suitable for boost.
Knowing how ugly such frameworks look like in other languages, eg. C#, this is great improvement and could become a great boost library too.
best regards
-Thorsten
I'll add my voice to this. I didn't download and try out your code, but from the article it looks like a nice piece of work that builds on other boost components to address some common distributed communication cases. Jeff

On 4/8/06, Jarl Lindrud <jlindrud@hotmail.com> wrote:
Hi all,
I just thought I would announce that I've released v. 0.2 of RCF, a portable C++ IPC framework. It makes extensive use of boost, including Boost.Threads, Boost. Serialization, and the recently accepted asio library, so maybe people on this list will find it of interest :)
Looks very interesting, but why the macros are needed? Sorry if I missed the explanation in the url, I went very fast in it. Are you aware of Boost.Interfaces (not submitted to boost for review yet, I think). Google pointed this URL for boost.interfaces: http://www.cdiggins.com/bil.html
http://www.codeproject.com/threads/Rcf_Ipc_For_Cpp.asp
/Jarl.
regards, -- Felipe Magno de Almeida

Felipe Magno de Almeida wrote:
Are you aware of Boost.Interfaces (not submitted to boost for review yet, I think). Google pointed this URL for boost.interfaces: http://www.cdiggins.com/bil.html
I think the libraries official home is: http://www.kangaroologic.com/interfaces/ But both Jonathan Turkanis and Christopher Diggins are busy with other things nowadays. Daniel

On 4/9/06, Daniel James <daniel_james@fmail.co.uk> wrote: [snipped]
I think the libraries official home is:
Thanks,
But both Jonathan Turkanis and Christopher Diggins are busy with other things nowadays.
Too bad, there were things that even looked kind magical in this library! It is very impressive.
Daniel
-- Felipe Magno de Almeida

Felipe Magno de Almeida <felipe.m.almeida <at> gmail.com> writes:
Looks very interesting, but why the macros are needed?
The macros generate C++ class definitions, with user-specified member functions. You can't do that with templates. The use of macros, in this case, results in lot less boilerplate code for the user to write.
Sorry if I missed the explanation in the url, I went very fast in it. Are you aware of Boost.Interfaces (not submitted to boost for review yet, I think). Google pointed this URL for boost.interfaces: http://www.cdiggins.com/bil.html
I've had a look at it, and it builds on the same idea (static interfaces) that RCF does. It's much more general, though. In RCF, the static interfaces are focused on implementing IPC's. The BIL library uses macros too, BTW, for the same purpose that RCF uses them. I know there's a lot of skepticism towards macros in general, but in this setting, the alternative is a 3rd party code generator, or do-it-by-hand boilerplate coding. Jarl.

On 4/10/06, Jarl Lindrud <jlindrud@hotmail.com> wrote:
Felipe Magno de Almeida <felipe.m.almeida <at> gmail.com> writes:
Looks very interesting, but why the macros are needed?
The macros generate C++ class definitions, with user-specified member functions. You can't do that with templates. The use of macros, in this case, results in lot less boilerplate code for the user to write.
Wouldnt this be possible? std::string foo(std::string); rcf::server s(endpoint); rcf::binder<std::string(std::string)> echo(&foo); int main() { s.register("IEcho", echo); server.run(); // blocks return; } If binder deserialize I believe it could call echo. Or am I missing something? Probably so, since BIL uses macros the same way as RCF.
Sorry if I missed the explanation in the url, I went very fast in it. Are you aware of Boost.Interfaces (not submitted to boost for review yet, I think). Google pointed this URL for boost.interfaces: http://www.cdiggins.com/bil.html
I've had a look at it, and it builds on the same idea (static interfaces) that RCF does. It's much more general, though. In RCF, the static interfaces are focused on implementing IPC's.
Yes, what I wanted to say(but forgot to) is that RCF could use it. As it could use shmem and asio for IPC. That would make rcf with a cleaner interface. BTW, I dont like very much the RCF namespace all in caps, it seems like a macro. But that's just an aesthetic issue.
The BIL library uses macros too, BTW, for the same purpose that RCF uses them.
Yes.
I know there's a lot of skepticism towards macros in general, but in this setting, the alternative is a 3rd party code generator, or do-it-by-hand boilerplate coding.
Yes, I agree. I just wanted some sort of rationale about why macros and what other alternatives are and why they are inferior.
Jarl.
Thanks, very good library! -- Felipe Magno de Almeida

On 4/10/06, Felipe Magno de Almeida <felipe.m.almeida@gmail.com> wrote: [snipped]
Wouldnt this be possible?
Sorry, I've missed that echo was in fact an object, not a simple RPC. So, I think sharing objects wouldnt be possible because there isnt compile-time reflections in C++ (not yet at least). My use-cases usually involve only simple asynchronous RPCs, so I dont know if they would fit in your library. Sorry for the noise. [snipped example]
-- Felipe Magno de Almeida
regards, -- Felipe Magno de Almeida

Felipe Magno de Almeida <felipe.m.almeida <at> gmail.com> writes:
On 4/10/06, Felipe Magno de Almeida <felipe.m.almeida <at> gmail.com> wrote:
My use-cases usually involve only simple asynchronous RPCs, so I dont know if they would fit in your library.
Well, if you want, you can have just 1 function in your interface... As for asynchronous, so far RCF supports the concept of oneway calls (you make the call, it goes down the wire, and you forget about it). There is also a publish/subscribe implementation in RCF that might suit your purposes. HTH, Jarl.

Felipe Magno de Almeida <felipe.m.almeida <at> gmail.com> writes:
Wouldnt this be possible?
std::string foo(std::string);
rcf::server s(endpoint); rcf::binder<std::string(std::string)> echo(&foo);
int main() { s.register("IEcho", echo); server.run(); // blocks return; }
It certainly is possible, and it's something I want to implement, but as you say it doesn't cover the case where you want to expose an interface consisting of several functions.
Yes, what I wanted to say(but forgot to) is that RCF could use it. As it could use shmem and asio for IPC. That would make rcf with a cleaner interface. BTW, I dont like very much the RCF namespace all in caps, it seems like a macro. But that's just an aesthetic issue.
Yeah, Rcf:: would be better. I've just gotten so used to the caps that I don't see them :) Regards, Jarl

Jarl Lindrud wrote:
BTW, I dont like very much the RCF namespace all in caps, it seems like a macro. But that's just an aesthetic issue.
Yeah, Rcf:: would be better. I've just gotten so used to the caps that I don't see them :)
Yuk -- mixed case is even worse. I'd suggest you either stick with RCF or go to rcf. Jeff

Jeff Garland <jeff@crystalclearsoftware.com> writes:
Jarl Lindrud wrote:
BTW, I dont like very much the RCF namespace all in caps, it seems like a macro. But that's just an aesthetic issue.
Yeah, Rcf:: would be better. I've just gotten so used to the caps that I don't see them :)
Yuk -- mixed case is even worse. I'd suggest you either stick with RCF or go to rcf.
At Boost we only use ALL_CAPS for macros; we use lowercase for everything else. So, rcf -- Dave Abrahams Boost Consulting www.boost-consulting.com

Felipe Magno de Almeida wrote:
BTW, I dont like very much the RCF namespace all in caps, it seems like a macro. But that's just an aesthetic issue.
The BIL library uses macros too, BTW, for the same purpose that RCF uses them.
Yes.
I know there's a lot of skepticism towards macros in general, but in this setting, the alternative is a 3rd party code generator, or do-it-by-hand boilerplate coding.
Yes, I agree. I just wanted some sort of rationale about why macros and what other alternatives are and why they are inferior.
During the development of BIL there was discussion of a 'template based' idl that got rid of the macros (see the BIL docs). It seemed likely that it was doable, but I don't believe it ever made it past the experimental stage. You might search the mail archives if you want to know more. Jeff

Hi all,
I just thought I would announce that I've released v. 0.2 of RCF, a portable C++ IPC framework. It makes extensive use of boost, including Boost.Threads, Boost. Serialization, and the recently accepted asio library, so maybe people on this list will find it of interest :)
http://www.codeproject.com/threads/Rcf_Ipc_For_Cpp.asp
/Jarl.
You should post this to the boost-interest mailing list. <mailto: Boost-Interest@lists.boost.org> -- -- Marshall (who moderates the boost-interest list) Marshall Clow Idio Software <mailto:marshall@idio.com> It is by caffeine alone I set my mind in motion. It is by the beans of Java that thoughts acquire speed, the hands acquire shaking, the shaking becomes a warning. It is by caffeine alone I set my mind in motion.
participants (7)
-
Daniel James
-
David Abrahams
-
Felipe Magno de Almeida
-
Jarl Lindrud
-
Jeff Garland
-
Marshall Clow
-
Thorsten Ottosen