router is a package for name-space based message passing for google's Go language
fix some compiling warnings and update build instructions
updated to build with boost distribution 1_39 and the following compilers:
ubuntu8.04/g++4.2.4; ubuntu9.04/g++4.3.3
Windows(VC++2005, VC++2008), also build under federa11 based on other developer's report.
Join library is a C++ asynchronous message coordination and concurrency library based on JoCaml and Cw. It provides a high level api of asynchronous ports, synchronous ports, chords and joints which support multithreaded applications and orchestration of asynchronous messages. This new release contains some major changes: support using boost lambda and phoenix to define chord function, support JoCaml functional style Join programming.
Design changes for simplicity and better performance. Keep consistent with Cw design (remove guards and multi synch methods). More optimizations to avoid copying and buffering
Framework is complete and document cleaned up. The major changes from last release are code related to chord_override and chord_remove. Also two tutorials are added: 1> implementing thread safe event dispatching using Join and 2> implementing data parallel algorithms (parallel loop and map-reduce) using Join.
The first release of Boost.Join - a C++ asynchronous concurrency library based on Cw and Join calculus
add Jamfile.v2 for building channel library and examples (current boost cvs build system is changed so Jamfile.v2 is required). However there is issues with building samples using Jamfile.v2 at WindowsXP/VC++. Windows users please use existing Jamfile (v1). This may involve replacing boost/tools/build/v1 directory with the content from an older boost release or cvs checkout (such as 12/10/2006)
1> complete filter and translator related code.
When we build distributed applications around distributed name spaces, we may want to "relocate"/"mount" the names imported (from a connection to a remote name space) to a specific sub-region in local name space. For example, if we have a name space in desktop computer and connect to a PDA and a laptop, we can set translators at connections so that names imported from PDA will appear under "/pda/" and names from laptop will appear under "/laptop/". Or if our application use integer as ids/names, we may want to relocate ids from the 1st connection to [1000-1999] and ids from next connection to [2000-2999] and so on. That is similar to the way how we mount remote file-systems to local file-system. filters are used to restrict the valid range of names allowed to pass in/out specific channel connections.
A sample is added to demo the usage of filter and translator.... read more
This release introduced associative lookup based name-matching and message passing. 2 kinds are implemented:
. regex based name-matching is implemented using Boost.Regex. applications can use regex patterns to subscribe to messages, e.g. use regex(".*ball.*") to subscribe to messages sent for "basketball", "baseball",etc.
. Linda style tuple associative lookup, implemented using Boost.Tuple. For example, we can use tuple ("Adam","Smith","Male","Math Dept") to identify a person; application can use (wildcard, wildcard, wildcard, "Math Dept") to subscribe to messages for all persons in math department.
Examples are added to demo these 2 methods.... read more
5th snapshot of boost_channel. changes are :
1. connecting push channel to pull channel
2. changes to make channel compatible with the latest Boost.Asio changes
3. changes to asio streams
4. other fixes
another snapshot of boost channel. the following changes:
1. initial Windows build on WindowsXP with Visual C++ 2005 Express. Most library code and samples build, tested and worked correctly, with the only exception of the sample using shared-memory message queue.
2. write a wrapper executor to use Philipp Henkel's threadpool library as executors. tested and worked smoothly.
3. reworked choice/join arbiters and implement them in both synchronous and asynchronous forms
4. add simple queues classes, add more documentation and fixed some bugs.
Changes:
1. restructuring of source code layout; moving code into the following sub directories: name_spaces, dispatchers, executors, streams; so that the design intention is clear that where the plug & playable components should be and what are their interfaces
2. add a "stream" class on top of shared memory message queue to connect 2 remote channels in 2 processes in the same box
3. add sample code for a demo distributed chat server and demo sample for shared memory channel connection
Source code clean up and add buffered asynchronous dispatcher with choice and join pattern code.
Initial design doc
This is the first snapshot of redesign and rewriting of Channel. There are major design changes. The current target platform is boost; implementation only use existing boost facilities.
Main design doc and more code (various dispatchers, samples...) will be checked in shortly
# Complete port and build on WindowsXP with VC8
# Add dispatching policy as Channel template parameter to support various dispatching algorithms; add Broadcast and simple RoundRobin dispatching policies for testing
# Change Callback to functor style; so normal functions and functors can be directly used as callbacks.
1. code of hierarchical router based on trie and simple test code
2. clean up of message handling code
3. new user manual
1. add SynchPolicy as a parameter of Channel template class
2. convert channel design doc to html format
3. add html design doc for CVM