Boost logo

Boost :

From: Dean Michael Berris (dmberris_at_[hidden])
Date: 2007-05-17 09:31:00


The title pretty much says it all...

Is there interest in developing a collection of client/server protocol
implementations (and a common "message" type) ? In particular, one
that builds on top of Boost.Asio to implement the common protocol
implementations that people usually require -- and then make it easy
to create common types of server applications.

In particular, the goal of the project would be to:

o Come up with a common 'message' type which can be crafted as an
object and passed around within/among the different networking
functions/routines convertible to strings and constructible using a
builder interface using Boost.Spirit

o Implement some common networking protocol clients like (but not limited to)
    * HTTP
    * SMTP
    * SNMP

o Come up with base types or template classes which can be used to
implement common server facitilies (via CRTP or PBCP) and modern C++
techniques (policies, TMP, etc.) to make the implementations flexible
and extensible

The common message type is something I've already implemented in a
different project (to be open sourced, but will serve a different
purpose), which could be replicated or made generic. The semantic
usage of the message type is shown below as an example/proposal:

  using namespace boost::network;
  message m;
  int some_value = 100;
  m << header("some_header", some_value)
    << header("multi_value",
tags::multi)(another_value)(some_other_value)(yet_another)
    << body("The quick brown fox jumps over the lazy dog");

  std::cout << http::message(m)
    (url("http://www.boost.org"))
    (method(http::post))
    << std::endl;
  std::cout << smtp::message(m)
    (to("boost_at_[hidden]")) << std::endl;

The above message type/object could then be used as the type commonly
used by the HTTP/SMTP/SNMP protocol implementations.

If there's interest, I should be able to post code soon about it.

If there's already an on-going effort in this regard, I'd like to be
able to contribute too.

If this is already done, then pardon the noise.

I can start a Sourceforge project for this, so if there are people
interested in helping out I'd love to hear your ideas. Currently I've
been developing it as a toy project on the side (pretty much the
message type is thought out already and implemented in another
project) and would like to know if people would like to use something
like this and see something like it be made part of Boost.

Hope to hear from you soon!

-- 
Dean Michael C. Berris
http://cplusplus-soup.blogspot.com/
mikhailberis AT gmail DOT com
+63 928 7291459

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk