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

Network Protocol Modules

Kamaelia.Protocol

Echo protocol and Fortune Cookies

EchoProtocol is the simplest protocol and forms a simple loopback protocol useful for integration testing. In practice this component is really a data pass throughcomponent since all data recieved on its inbox is passed on directly to its outbox. Kamaelia.Util.PassThrough is a similar component.

FortuneCookieProtocol is one step above EchoProtocol. It runs the fortune program on the server and sends the result to its outbox. In a networked environment what this means is the server will simply blat the fortune cookie to a client that connects to the server.

AudioCookieProtocol is a further logical extension. Similar to FortuneCookieProtocol it too runs an external program and sends the result to its outbox. In this case however rather than a short piece of text, it is a short snippet of audio.

SimpleVideoCookieServer is essentially the same but his time with a short piece of video.

HTTP

Kamaelia.Protocol.HTTP is a collection of components implementing an extensible HTTP server and an HTTP Client. There is also an implementation of a SHOUTcast/Icecast client.

RTP

Kamaelia.Protocol.RTP is a set of modules for implementing RTP.

Simple Reliable Multicast

Kamaelia.Protocol.SimpleReliableMulticast module contains a simple collection of components that can be pipelined together to create a simple protocol for reliable transfer of data over multicast - designed to cope with duplicated, lost and delivered-out-of-order packets.

Bit Torrent

Kamaelia.Protocol.Torrent is a set of modules that wrap the mainline bittorrent code adding bit-torrent components to Kamaelia. Specifically the TorrentPatron component provided shared access to bittorrent functionality.

Support: Packetisation, Framing, MIME types, etc

These components don't implement fully fledged protocols, but provide useful support that many protocols may wish to use.

The Framing module contains components that implement a simple protocol for framing chunks of data and combining them with an associated 'tag' - making it easy to add things like sequence numbers to a stream of chunks of data.

MimeRequestComponent module unpacks MIME request headers into a python dict object.

Packetise contains a simple component for ensuring that data chunks do not exceed a specified size - particularly useful, for example, for ensuring UDP payloads fit within a packet size limit.


-- Michael, December 2004; updated by Matt, April 2007