Parsing infinite streams style

Jay Nelson <>
Fri Mar 5 17:30:05 CET 2004


Joe wrote:

 > There are two ways of doing this

If the stream contains multiple interspersed data streams,
you may want to use separate processes to handle them:

<start msg 1> <start msg 2> <more msg 1> <start msg 3>
<end msg 1> ...


Inside the loop, create a new process when new msg starts.
Update State to include Pid and loop.

When more is parsed and received, send it to Pid and loop.

When end is parsed, send it with a finished tag, remove the
Pid from State and loop.

The collecting process just builds a list and then handles it when
the finished message arrives.  It runs to completion using only
the data it has been handed.

This technique can be combined with the continuation function
technique if the parsing is dependent on the previous data so
that the parsing function becomes part of the state associated
with the new Pid and encapsulates the current parse state.

jay


---------------------------------------------------
DuoMark International, Inc.
6523 Colgate Avenue, Suite 325
Los Angeles, CA  90048-4410 / USA
Voice: +1 323 381-0001
FAX: +1 323 549 0172
Email: 
WWW: http://www.duomark.com/





More information about the erlang-questions mailing list