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

Kamaelia.Util.Chunkifier

Chunkifier

A component that fixes the message size of an input stream to a given value, outputting blocks of that size when sufficient input has accumulated. This component's input is stream orientated - all messages received are concatenated to the interal buffer without divisions.

Example Usage

Chunkifying a console reader:

pipeline(
    ConsoleReader(eol=""),
    Chunkifier(20),
    ConsoleEchoer()
).run()

How does it work?

Messages received on the "inbox" are buffered until at least N bytes have been collected. A message containing those first N bytes is sent out "outbox". A CharacterFIFO object is used to do this in linear time.

The usual sending of a producerFinished/shutdown to the "control" inbox will shut it down.


Kamaelia.Util.Chunkifier.Chunkifier

class Chunkifier(Axon.Component.component)

Chunkifier([chunksize]) -> new Chunkifier component.

Flow controller - collects incoming data and outputs it only as quanta of a given length in bytes (chunksize), unless the input stream ends (producerFinished).

Keyword arguments: - chunksize -- Chunk size in bytes - nodelay -- if set to True, partial chunks will be output rather than buffering up data while waiting for more to arrive.

Inboxes

  • control : Shut me down
  • inbox : Data stream to be split into chunks

Outboxes

  • outbox : Each message is a chunk
  • signal : I've shut down

Methods defined here

Warning!

You should be using the inbox/outbox interface, not these methods (except construction). This documentation is designed as a roadmap as to their functionalilty for maintainers and new component developers.

__init__(self[, chunksize][, nodelay])

main(self)

sendChunk(self)

sendPartialChunk(self)

Feedback

Got a problem with the documentation? Something unclear that could be clearer? Want to help improve it? Constructive criticism is very welcome - especially if you can suggest a better rewording!

Please leave you feedback here in reply to the documentation thread in the Kamaelia blog.

-- Automatic documentation generator, 05 Jun 2009 at 03:01:38 UTC/GMT