April 2024 - This site, and Kamaelia are being updated. There is significant work needed, and PRs are welcome.

Utility Modules

This is a small collection of utility components. They perform various universally useful functions, ranging from Console input and output to simple data filtering and transformations.

Console I/O (standard input and output)

Kamaelia.Util.Console contains the ConsoleReader and ConsoleEchoer components for reading from standard input and writing to standard output respectively.

Backplanes, Splitters, Fanouts (ways to distribute data to multiple receipient components)

The Splitter and Fanout components are both very similar - send one item of data to them and it gets replicated to multiple destinations. The Splitter module is the more actively maintained with a wider range of components in it.

The Backplane module built on them by providing a way to "publish" data under a name, and allow other components to "subscribe" to it.

Data filtering, processing, transforming

There is a whole range of components for performing simple functions, ranging from de-tupling data (eg. extracting one of the terms from a tuple it is sent) to converting data to strings or applying an arbitrary transformation (function) to data.

Processing streams of data

There are also components for tagging or chunking data or splitting strings by newline characters or tokenising strings.

Timing, Regulating and controlling

This fairly maverick bunch of modules contain components that perform various functions that can be used to control or regulate a system.

Chooser components serve up data one item at a time on demand - a way to iterate through a collection of data items, values or even instructions. DataSource is a simplified way of injecting data into a system; and LossyConnector provides a way to 'loose it' if there is too much clogging up!

Clock and RateFilter contain components for generating or regulating the timing or flow of data - for example, generating regular timing pulses, or buffering and regulating the flow of data, perhaps to maintain a frame rate.


-- Matt, April 2007