From: Yigong Liu (yigongliu_at_[hidden])
Date: 2006-09-28 22:29:23
Thanks for your interests. Your comments will be highly appreciated.
On 9/28/06, Dmitry Smirnov <basilisk_at_[hidden]> wrote:
> I wrote similar library for my own purposes and will make review of your
> library as soon as I can. You can see attached code, unfortunately I
> made all comments in russian (as my company demands) but there is using
> example in the end of main header messagetransfer.h.
> Best Regards,
> Dmitry Smirnov
> Saint-Petersburg, Russia
> Yigong Liu wrote:
> > Last night i sent out this email as reply to some old email. I didnot
> see it
> > appearing in my gmail mbox this morning. So i am resending it
> and hoping to
> > get more comments on design. Sorry for the duplication.
> > Channel is a Namespace based C++ template framework for distributed
> > passing and event dispatching. It is redesigned and reimplemented based
> > Boost. Initial design document and major framework code is available
> > sourceforge:
> > http://channel.sourceforge.net/boost_channel/doc/design.html
> > http://sourceforge.net/projects/channel
> > Coding and testing is done in linux (Fedora Core 3 &4). Havent try it on
> > Windows yet. Comments and corrections on the design are highly
> > Attached please find a introduction of the library.
> > Thanks
> > Yigong
> > In Unix and most OSes, file systems allow applications to identify, bind
> > and operate on system resources and entities (devices, files,...) using
> > "name" (path name) in a hierarchical namespace (directory system) which
> > different from variables and pointers in flat address space.
> > In Boost.Signal and libsigc++, callbacks/slots objects can be connected
> > explicitly to specific signals objects to allow synchronous event
> > dispatching.
> > Channel is a C++ template library to provide namespaces for
> > distributed message passing and event dispatching. Message senders and
> > receivers bind to names in namespace; binding and matching rules decide
> > which senders will bind to which receivers; then message passing and
> > dispatching could happen among bound senders and receivers.
> > Channel's signature:
> > template <
> > typename idtype,
> > typename platform_type = boost_platform,
> > typename synchpolicy = mt_synch<platform_type>,
> > typename executor_type = abstract_executor,
> > typename name_space =
> > linear_name_space<idtype,executor_type,synchpolicy>,
> > typename dispatcher =
> > >
> > class channel;
> > Various namespaces (linear/hierarchical/associative) can be used for
> > different applications. For example, we can use integer ids as names to
> > messages in linear namespace or we can use path name ids to send
> messages in
> > hierarchical namespace; User can configure namespace easily by setting a
> > channel template parameter.
> > Channel's other major components are dispatchers; which dispatch
> > messages/events from senders to bounded receivers. Dispatcher is also a
> > channel template parameter. The design of dispatchers can vary in
> > dimensions:
> > - how msgs move: push or pull;
> > - how callbacks executed: synchronous or asynchronous.
> > Sample dispatchers includes : synchronous broadcast dispatcher, buffered
> > asynchronous dispatchers,...
> > Namespace and dispatchers are orthogonal; they can mix and match
> > freely; just as STL algorithms can be used with any STL containers by
> > of the iterator range concept, Namespace and dispatchers can be used
> > together because of the name binding set concept.
> > By combining different namespace and dispatching policies, we can
> > various models:
> > - synchronous event dispatching
> > - associative space model similar to tuple space
> > - asynchronous messaging model similar to Microsoft CCR (Concurrency
> > Coordination Runtime)
> > Similar to distributed files systems, distributed channels can be
> > or "mounted" to allow transparent distributed message passing. Filters
> > translators are used to control namespace changes.
> > Channel is built on top of Boost facilities:
> > - boost::shared_ptr for message/event data life-time management
> > - boost::bind, boost::function for callback
> > - boost::thread for synchronization
> > - boost::serialization for message marshaling/demarshaling
> > - Boost.Asio and Boost.Shmem are used to build transports among
> > channels.
> > _______________________________________________
> > Unsubscribe & other changes:
> Unsubscribe & other changes:
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk