A message broadcasting system for Clojure
Clojure
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
example
src/holler
test/holler/test
.gitignore
README
project.clj

README

# holler

A message broadcasting system for Clojure

## Usage

Holler provides a broadcast message system for Clojure.

There are two inspirations for this.

First, my other language is LSL, the internal scripting language for
the Second Life environment. While this language has it's limitations,
it has a neat message passing scheme.
Second, it's a reaction to the horrid Java listener pattern.


Forgive the weird names. I didn't want to collide with 'actor' based
systems, and 'object' seemed suicidal as well, so I call objects
that participate in the system 'doodads'.

The metaphor is that there are objects (I call them doodads) which are, 
at any time, in a space.

Each space is itself a doodad.

doodads communicate by broadcasting async or sync messages.
Other doodads in the space register to listen to messages.

The space itself may broadcast and listen to messages.

Each doodad has a (possibly non-unique) name.

Doodads can talk into any space they have a reference to.
Doodads are 'in' one space.

(doodad <name> <space> <init-state>
   (listen <restriction-map> <handler-fn>) 
   (listen <restriction-map> <handler-fn>) ...
   )
   
Notice that a doodad is created in a given space.
Doodads can be moved to another space
(move <new-space>)

or killed
(move nil)

(holler <id> <options> <data>)
options can be
:wait   - block until all receivers have processed this message
:space <ref>  - message in this space, not in my location

## Installation

FIXME: write

## License

Copyright (C) 2010 Anne Ogborn

This program may be used and distributed under the terms of
Lesser GNU Public License. Doing evil with it is strictly prohibited.