MPI, Interprocess and Asio

Hi, Basically I am looking for a unified library in Boost that will also me to handle and dispatch events and also allow communication between processes on a local pc and also a remote pc. Is there such a boost library? ALSO: MPI: Does it support communication from a local pc to a remote pc? Does it support handling and dispatch of events? Does it support marshalling/unmarshalling of user-defined types? Inteprocess: Does it support communication to a remote pc or is it only for processes running on the local pc? Does it support handling and dispatch of events? Does it support marshalling/unmarshalling of user-defined types? Asio: Does it support handling and dispatch of events? Does it support marshalling/unmarshalling of user-defined types? Thanks S

Inteprocess: Does it support communication to a remote pc or is it only for processes running on the local pc? No. Does it support handling and dispatch of events? No. Does it support marshalling/unmarshalling of user-defined types? No.
As you can see, Interprocess is pretty limited for your needs :-( For the moment, Interprocess offers generic wrappers over common intra-machine, interprocess mechanisms (shared memory, memory mapped files, mutex/condition/message queue...) Interprocess has not (yet) higher level mechanisms. In theory, one could use Interprocess to build more advanced serialization features for intra-machine communication. Regards, Ion

On Sep 30, 2006, at 7:56 PM, Shams wrote:
Basically I am looking for a unified library in Boost that will also me to handle and dispatch events and also allow communication between processes on a local pc and also a remote pc. Is there such a boost library?
ALSO:
MPI: Does it support communication from a local pc to a remote pc? Yes.
Does it support handling and dispatch of events? No.
Does it support marshalling/unmarshalling of user-defined types? Yes.
I think ASIO is probably the "right" library for you. Doug

Hi Shams, On 10/1/06, Shams <shams@orcon.net.nz> wrote:
Basically I am looking for a unified library in Boost that will also me to handle and dispatch events and also allow communication between processes on a local pc and also a remote pc. Is there such a boost library?
Quick answer would be yes (Asio) and no (not directly). AFAICT from your needs, it looks like you can use Asio to do the communication between processes (local or remote) while the event dispatching you have to handle yourself (you can look at the Runtime Dynamic Dispatch library (yes, this is a shameless plug), http://sourceforge.net/project/dispatcher ). Someone also posted something about Channels http://channel.sourceforge.net/ -- which is not (yet?) a part of Boost. HTH -- Dean Michael C. Berris C++ Software Architect Orange and Bronze Software Labs, Ltd. Co. web: http://software.orangeandbronze.com/ email: dean@orangeandbronze.com mobile: +63 928 7291459 phone: +63 2 8943415 other: +1 408 4049532 blogs: http://mikhailberis.blogspot.com http://3w-agility.blogspot.com http://cplusplus-soup.blogspot.com

On 10/2/06, Dean Michael Berris <mikhailberis@gmail.com> wrote:
have to handle yourself (you can look at the Runtime Dynamic Dispatch library (yes, this is a shameless plug), http://sourceforge.net/project/dispatcher ).
My bad, that's http://sourceforge.net/projects/dispatcher -- Dean Michael C. Berris C++ Software Architect Orange and Bronze Software Labs, Ltd. Co. web: http://software.orangeandbronze.com/ email: dean@orangeandbronze.com mobile: +63 928 7291459 phone: +63 2 8943415 other: +1 408 4049532 blogs: http://mikhailberis.blogspot.com http://3w-agility.blogspot.com http://cplusplus-soup.blogspot.com

Dean Michael Berris wrote:
On 10/2/06, Dean Michael Berris <mikhailberis@gmail.com> wrote:
have to handle yourself (you can look at the Runtime Dynamic Dispatch library (yes, this is a shameless plug), http://sourceforge.net/project/dispatcher ).
My bad, that's http://sourceforge.net/projects/dispatcher
Is there online documentation for this? This and channels sound like things I could really use. I hope one or both is proposed for Boost. -Dave

Hi Dave! On 10/3/06, David Greene <greened@obbligato.org> wrote:
Dean Michael Berris wrote:
My bad, that's http://sourceforge.net/projects/dispatcher
Is there online documentation for this? This and channels sound like things I could really use. I hope one or both is proposed for Boost.
You can get the sources (and docs) from subversion: svn co https://svn.sourceforge.net/svnroot/dispatcher dispatcher I've recently been building it on MSVC 8 with Boost RC_1_34_0, and intend to factor out a `strategized unsorted map' from the actual dispatcher implementation -- which I agree with Dave (Abrahams) will be a more generic library for everyone. OTOH, we're already using the dispatcher implementation in a project (in more places than one) -- we've tried to be creative and used it to control a leader-follower thread pool implementation along with Boost.Thread with some success. Though the feature request (online docs) might take some time, that's something I personally have to work on. And about proposing it for inclusion into boost, I'll try improving it more on my own first -- having heard comments from others in the community already when I gauged for interest a couple months (?) back. But you know, work kinda gets in the way of fun. :D -- Dean Michael C. Berris C++ Software Architect Orange and Bronze Software Labs, Ltd. Co. web: http://software.orangeandbronze.com/ email: dean@orangeandbronze.com mobile: +63 928 7291459 phone: +63 2 8943415 other: +1 408 4049532 blogs: http://mikhailberis.blogspot.com http://3w-agility.blogspot.com http://cplusplus-soup.blogspot.com

On 10/2/06, David Greene <greened@obbligato.org> wrote:
Dean Michael Berris wrote:
On 10/2/06, Dean Michael Berris <mikhailberis@gmail.com> wrote:
have to handle yourself (you can look at the Runtime Dynamic Dispatch library (yes, this is a shameless plug), http://sourceforge.net/project/dispatcher ).
My bad, that's http://sourceforge.net/projects/dispatcher
Is there online documentation for this? This and channels sound like things I could really use. I hope one or both is proposed for Boost.
You can browse the docs in SVN starting at http://svn.sourceforge.net/viewvc/*checkout*/dispatcher/trunk/doc/html/index...

Hello there, What are the platforms of your applications? Windows32 or linux? What are the c++ compilers (which versions) you are using? I am doing most of my code and test in FedoraCore3&4. Now I am going to start building Channel on win32 using VC++2005 express. Hope i am covering most popular compilers. I am going to post a new version of channel at sourceforge tonight which will include a new "stream" class on top of Boost.Interprocess shmem message queues. So we can connect 2 channels at different processes thru shmem. Plan to add channel connections based on SOAP later. You can find channel's design doc at http://channel.sourceforge.net/boost_channel/doc/design.html. Your comments and corrections will be highly appreciated. Thanks Yigong

Hi Shams,
Basically I am looking for a unified library in Boost that will also me to handle and dispatch events and also allow communication between processes on a local pc and also a remote pc. Is there such a boost library?
Based on your specific requirements, the Channel library/framework i am working on seems a good fit. Channel is a C++ template framework for asynchronous local/distributed event dispatching and message passing. Channel's name_space help bind message/event senders to local/remote message/event receivers and dispatch messages/events from senders to receivers. Various name_spaces and dispatching policies can be plugged into the framework depending on applications' requirements. Channel is built on existing boost libraries: it uses Boost.Asio and Boost.Interprocess to create the transport among distributed processes and uses Boost.Serialization for message marshaling/demarshaling. Channel is for building ordinary asynchronous distributed applications. Channel is not a boost library yet, and i am working toward a boost proposal. I posted about Channel on this email list about half a year ago and many expressed interests and the comments are really helpful. I'll continue improving code based on feedbacks. It currently builds in linux with gcc. What i am doing now is fix bugs and build it on Win32 with VC++2005 express and after that is done i'll submit formal proposal with a boostified document. FYI, i just did a snapshot of latest code and post it at http://channel.sourceforge.net. The changes are: 1. restructuring of source code directories; move components to sub-directories (where they should be): name_spaces, executors, dispatchers, streams. 2. add a "stream" class based on Boost.Interprocess shmem message queue to connect channels at different processes in the same box thru shared memory 3. add samples to demo shmem based channel connections and distributed chat (client/server) based on "stream" on top of ASIO socket. Comments and corrections are highly appreciated. Thanks Yigong

Shams <shams <at> orcon.net.nz> writes:
Hi,
Basically I am looking for a unified library in Boost that will also me to
handle and dispatch
events and also allow communication between processes on a local pc and also a remote pc. Is there such a boost library?
Maybe RCF would be of use to you. It makes use of a number of boost libraries, in paticular the asio and serialization libraries. http://www.codeproject.com/threads/Rcf_Ipc_For_Cpp.asp
Does it support communication from a local pc to a remote pc? Yes
Does it support handling and dispatch of events? Depends on what you mean. Have a look at the publish/subscribe mechanism.
Does it support marshalling/unmarshalling of user-defined types? Yes.
Regards, Jarl.
participants (8)
-
David Greene
-
Dean Michael Berris
-
Douglas Gregor
-
Ion Gaztañaga
-
Jarl Lindrud
-
Shams
-
Thomas Matelich
-
Yigong Liu