August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)

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