ANNOUNCE: Kamaelia 0.1.1 Released

Michael Sparks michaels at rd.bbc.co.uk
Wed Mar 2 13:05:46 CET 2005


Kamaelia 0.1.1 has been released!

This is the initial release version of Kamaelia.

What is it?
===========
Kamaelia is a collection of Axon components designed for network
protocol experimentation in a single threaded, select based
environment. Axon components are python generators are augmented by
inbox and outbox queues (lists) for communication in a communicating
sequential processes (CSP) like fashion.

The architecture is specifically designed to try and simplify the
process of designing and experimenting with new network protocols in
real environments.

This release contains components allowing the creation of TCP based
clients and servers, and includes a few (very) simple protocol handlers
to show usage.

Other components include vorbis decode and playback, asynchronous file
reading, and equivalents of "tee" and "strings". (Writing systems is
much like building unix pipelines, hence the need for similar tools)

Examples
========
Sample echo server: (default generator callback style)

    from Kamaelia.SimpleServerComponent import SimpleServer
    from Axon.Component import component, scheduler
    
    class EchoProtocolCB(component):
    def mainBody(self):
          if self.dataReady("inbox"):
             data = self.recv("inbox")
             self.send(data,"outbox")
          if self.dataReady("control"):
             data = self.recv("control")
             return 0
          return 1

    SimpleServer(protocol=EchoProtocolCB).activate()
    scheduler.run.runThreads(slowmo=0)

Sample echo server: (Normal generator style)

    from Kamaelia.SimpleServerComponent import SimpleServer
    from Axon.Component import component, scheduler

    class EchoProtocol(component):
       def main(self):
          while 1:
             if self.dataReady("inbox"):
                data = self.recv("inbox")
                self.send(data,"outbox")
             if self.dataReady("control"):
                data = self.recv("control")
                return
             yield 1

    SimpleServer(protocol=EchoProtocol).activate()
    scheduler.run.runThreads(slowmo=0)

The two styles are provided for those comfortable with generators and
those who aren't. The plain generator form can be particularly useful
in simplifying error handling (see Kamaelia.Internet.TCPClient for an
example). The callback form is useful for implementing components in
other languages - eg pyrex.

Requirements
============
   * Python 2.3 or higher recommended, though please report any bugs
     with 2.2.
   * Axon (Any released version, 1.0.3 recommended, 1.0.4 when released)
   * vorbissimple (if you want to use the vorbis decode component)

(Both Axon and vorbissimple are separate parts of the Kamaelia project,
and available at the same download location - see below)

Platforms
=========
Kamaelia has been used successfully under both Linux and Windows (2000
and ME).

(This has not yet been tested with Axon running on series 60 mobiles
since to the select module hasn't been released for Series 60 mobiles
yet)

Where can I get it?
===================
Web pages are here:
   http://kamaelia.sourceforge.net/Docs/
   http://kamaelia.sourceforge.net/ (includes info on mailing lists)

ViewCVS access is available here:
   http://cvs.sourceforge.net/viewcvs.py/kamaelia/

Licensing
=========
Kamaelia is released under the Mozilla tri-license scheme (MPL/ GPL/
LGPL). Specifically you may choose to accept either the Mozilla Public
License 1.1, the GNU General Public License 2.0 or the Lesser General
Public License 2.1. Proprietary terms and conditions available upon
request.

Best Regards,


Michael.
-- 
Michael Sparks, Senior R&D Engineer, Digital Media Group
Michael.Sparks at rd.bbc.co.uk
British Broadcasting Corporation, Research and Development
Kingswood Warren, Surrey KT20 6NP

This message (and any attachments) may contain personal views
which are not the views of the BBC unless specifically stated.




More information about the Python-announce-list mailing list