Boost logo

Boost :

From: Hurd, Matthew (hurdm_at_[hidden])
Date: 2003-10-29 21:16:04

> From: Scott Woods [mailto:scottw_at_[hidden]]

Hi Scott,

> > From: "Hurd, Matthew" <hurdm_at_[hidden]>
> > I wish to do some transparent marshalling...
> >
> > That is, via a policy, or some such, either call a function / functor
> > returning a void or put stuff on a message queue for transportation.
> >
> > This is strictly asynch stuff, hence the void result or putting the
> message
> > in the ether.
> >
> > The message queues I have in mind are tibrv, udp, tcp, shared mem,
> email,
> > internal process queue/thread... The important point is boiling down to
> a
> > function call or in-line equivalent with zero friction rather than a
> corba,
> > com, soap rpc.
> >
> > I see the serialization w.i.p. library will be useful here. Any tips on
> > some useful boost libs / techniques to do this?
> Cant offer any tips but can support your interest. A question though;
> * have you looked at the state-machine work done by Andreas Huber

Yep. Doing a new workflow thing. Did one a while back using hierarchical
graphs using a customized GGCL (now BGL). Did a topological sort and then
event like dynamic execution in a thread pool.

Thinking of making the same extensions to BGL. The state machine might be a
bit too compile time oriented, but perhaps that can fit in with BGL in a way
that I need to find.

Hmmm, a compile time hierarchical graph library that can result in parts
being a state machine or other representation and rest being "dynamic" would
do it, but is probably too big to contemplate.

Am considering doing a code generator from the graph representation...
haven't thought about doing that at compile time... sounds hard.

> I ask because you mention "strictly asynch". Or are you hoping to
> integrate "boost transparent marshalling" with your own async event
> system?

Basically I wish to find an abstraction for compile time that results in a
function/functor call, a call to queue fed threaded worker pool, a call to
another process, or, a call to an external machine.

I think of it as another type of sequence point where you can break out into
a different mode of execution... Changing the policy lets you simply change
the system architecture.

> If I am hearing you right then I think the combination of serialization
> and
> state-machine would be interesting to you. Sadly no-one else is pushing
> for this integration (BTW dont know of anything precluding it ;-)
> And we are talking about WIP.
> Would be interested in clarification of "function call or in-line
> equivalent
> [..] zero friction". Thats because of some work I'm doing on a transparent
> marshalling lib.

Just means I want to get down to a functor or function call that has a
pretty equal chance of being optimized, including being inlined, as a normal
native function call. That is, the usual C++ doctrine of not paying for
what you don't use. For example a method that uses a somewhat expensive
callback mechanism might not be so appropriate. Zero friction is just a
colloquialism for "doesn't get in the way".

> Cheers,
> Scott


Matt Hurd

Susquehanna Pacific P/L

Boost list run by bdawes at, gregod at, cpdaniel at, john at