You might want to check out this paper on a simple functional I/O system:

http://www.ccs.neu.edu/scheme/pubs/icfp09-fffk.pdf

The basic idea is really simple and natural. I've used something
similar in my own past programs and I noticed that Penumbra has a
GLUT-like event-driven interface that works along similar lines.

-Per

On Mon, Apr 19, 2010 at 2:45 PM, Chris Riddoch <[email protected]> wrote:
> I'd like to call on the collective wisdom of the group to help me with
> a project I've come up with (partly) for the purpose of understanding
> Clojure's parallelism & synchronization primitives.
>
> Imagine a library that both creates and accepts network sockets,
> acting like a simple proxy, forwarding data in both directions.  It
> would provide hooks for intermediate processing of data in both
> directions.  But don't just think "web proxy" -- my main purpose is to
> allow for better testing of *any* given networking protocol.
> Specifically, to log the interactions, replay either side of the
> communication to simulate any system too complicated to mock, do
> fuzz-testing in the middle of the stream for security testing... that
> sort of thing.  (Simple protocol logging with timestamps is the first
> task I have in mind.)
>
> To better my understanding, I'd like to use a design that requires no
> explicit main event loop in my code, and exposes me to functional
> techniques.   I suspect the result will look a little like the various
> libraries such as Ruby's IO::Reactor, Perl's POE, or Python's Twisted.
> But I also suspect that Clojure's unique features will make this a lot
> easier.
>
> Here's where I'm stuck: I don't quite understand how to use Clojure's
> parallelization and synchronization primitives for solving this kind
> of problem -- I understand the designs for ordinary servers quite a
> lot better than those for proxies.
>
> I'd  appreciate pointers to documents about this, but I especially
> want to inspire some discussion of what would be idiomatic clojure for
> an event-driven asynchronous-I/O application like the one I'm
> describing.
>
> Please help me design!
>
> --
> Chris Riddoch
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to [email protected]
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to