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

Kamaelia.Chassis.Seq

  • component Seq

Run components one after the other (in sequence)

A Seq component runs components one after the other in sequence, waiting until one terminates before starting the next.

Strings can also be put in the sequence. They'll be printed to the console

Example Usage

Run several OneShot components running one after the other:

Pipeline( Seq( "BEGIN SEQUENCE",
               OneShot("Hello\n"),
               OneShot("Doctor\n"),
               OneShot("Name\n"),
               OneShot("Continue\n"),
               OneShot("Yesterday\n"),
               OneShot("Tomorrow\n"),
               "END SEQUENCE",
             ),
          ConsoleEchoer(),
        ).run()

Running this generates the following output:

BEGIN SEQUENCE
Hello
Doctor
Name
Continue
Yesterday
Tomorrow
END SEQUENCE

Behaviour

Each component in the sequence is activated as a child component and is wired up so that the "inbox" inbox and "outbox" outbox are forwarded to the "inbox" inbox and "outbox" outbox of the Seq component itself.

When the child component terminates it is replaced with the next in the sequence.

If a string is listed instead of a component then it is printed on the console and Seq immediately moves onto the next in the sequence.

Any messages sent out of the child component's "signal" outbox are dropped - this is so that if you Pipeline a Seq component to another, it does not cause it to terminate when the Seq component switches to a new child.

This component ignores any messages sent to its "control" inbox.

When the end of the sequence is reached, a producerFinished() message is sent out of the "signal" outbox and the component terminates.


Kamaelia.Chassis.Seq.Seq

class Seq(Axon.Component.component)

Seq(*sequence) -> new Seq component.

Runs a set of components in sequence, one after the other. Their "inbox" inbox and "outbox" outbox are forwarded to the "inbox" inbox and "outbox" outbox of the Seq component.

Keyword arguments:

  • *sequence -- Components that will be run, in sequence. Can also include strings that will be output to the console.

Inboxes

Outboxes

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, *sequence)

childrenDone(self)

Unplugs any children that have terminated, and returns true if there are no running child components left (ie. their microproceses have finished)

main(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