Components only have input & output boxes. For data to get from a producer (eg a file reader) to a consumer (eg an encryption component) then the output of one component, the source component, must be linked to the input of another component, the sink component.
All components have a postoffice object, this performs the creation and destruction of linkages. Ask it for a linkage between inboxes and outboxes and a linkage object is returned as a handle describing the linkage. When a message is sent to an outbox, it is immediately delivered along linkage(s) to the destination inbox. This is not the usual technique for software messaging. Normally you create messages, addressed to something specific, and then the message handler delivers them. However the method of communication used here is the norm for hardware systems, and generally results in very pluggable components - the aim of this system, hence this design approach rather than the normal. This method of communication is also the norm for one form of software system - unix shell scripting - something that has shown itself time and again to be used in ways the inventors of programs/components never envisioned. Test documentationTests passed:
Axon.Linkage.linkageclass linkage(Axon.Axon.AxonObject)linkage(source, sink[, passthrough]) -> new linkage object An object describing a link from a source component's inbox/outbox to a sink component's inbox/outbox. Keyword arguments: - source -- source component - sink -- sink component - sourcebox -- source component's source box name (default="outbox") - sinkbox -- sink component's sink box name (default="inbox") - passthrough -- 0=link is from inbox to outbox; 1=from inbox to inbox; 2=from outbox to outbox (default=0) Methods defined here__init__(self, source, sink[, sourcebox][, sinkbox][, passthrough][, pipewidth][, synchronous])x.__init__(...) initializes x; see x.__class__.__doc__ for signature. getSinkbox(self)Returns the box object that this linkage goes to. getSourcebox(self)Returns the box object that this linkage goes from. setShowTransit(self, showtransit, tag)Set showTransit to True to cause debugging output whenever a message is delivered along this linkage. The tag can be anything you want to identify this occurrence. setSynchronous(self[, pipewidth])Legacy method for setting the size limit on a linkage. Instead it sets the size limit for the destination inbox. A pipewidth of None specifies that there should be no limit. This method is likely to be deprecated soon. sinkPair(self)Returns (component,boxname) tuple describing where this linkage goes to sourcePair(self)Returns (component,boxname) tuple describing where this linkage goes from FeedbackGot 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, 01 Feb 2010 at 04:00:28 UTC/GMT |
Kamaelia
is an open source project originated from and guided by BBC
Research. For more information browse the site or get in
contact.
This is an ongoing community based development site. As a result the contents of this page is the opinions of the contributors of the pages involved not the organisations involved. Specificially, this page may contain personal views which are not the views of the BBC. (the site is powered by a wiki engine)
(C) Copyright 2008 Kamaelia Contributors, including the British Broadcasting Corporation, All Rights Reserved