Axon postoffices
A postoffice object looks after linkages. It can create and destroy them and keeps records of what ones currently exist. It hands out linkage objects that can be used as handles to later unlink (remove) the linkage. THIS IS AN AXON INTERNAL! If you are writing components you do not need to understand this. Developers wishing to understand how Axon is implemented should read on with interest! How is this used in Axon?Every component has its own postoffice. The component's link() and unlink() methods instruct the post office to create and remove linkages. When a component terminates, it asks its post office to remove any outstanding linkages. Example usageCreating a link from an inbox to an outbox; a passthrough link from an inbox to another inbox; and a passthrough link from an outbox to another outbox: po = postoffice() c0 = component() c1 = component() c2 = component() c3 = component() link1 = po.link((c1,"outbox"), (c2,"inbox")) link2 = po.link((c2,"inbox"), (c3,"inbox"), passthrough=1) link3 = po.link((c0,"outbox"), (c1,"outbox"), passthrough=2) Removing one of the linkages; then all linkages involving component c3; then all the rest: po.unlink(thelinkage=link3) po.unlink(thecomponent=c3) po.unlinkAll() More detailA postoffice object keeps creates and destroys objects and keeps a record of which ones currently exist. The linkage object returned when a linkage is created serves only as a handle. It does not form any operation part of the linkage. Multiple postoffices can (in fact, will) exist in an Axon system. Each looks after its own collection of linkages. A linkage created at one postoffice will not be known to other postoffice objects. Test documentationTests passed:
Axon.Postoffice.postofficeclass postoffice(object)The post office looks after linkages between postboxes, thereby ensuring deliveries along linkages occur as intended. There is one post office per component. A Postoffice can have a debug name - this is to help differentiate between postoffices if problems arise. Methods defined here__init__(self[, debugname])Constructor. If a debug name is assigned this will be stored as a debugname attribute. __str__(self)Provides a string representation of a postoffice, designed for debugging deregisterlinkage(self[, thecomponent][, thelinkage])Stub for legacy islinkageregistered(self, linkage)Returns a true value if the linkage given is registered with the postoffie. link(self, source, sink, *optionalargs, **kwoptionalargs)link((component,boxname),(component,boxname),**otherargs) -> new linkage Creates a linkage from a named box on one component to a named box on another. See linkage class for meanings of other arguments. A linkage object is returned as a handle representing the linkage created. The linkage is registered with this postoffice. Throws Axon.AxonExceptions.BoxAlreadyLinkedToDestination if the source is already linked to somewhere else (Axon does not permit one-to-many). unlink(self[, thecomponent][, thelinkage])unlink([thecomponent][,thelinkage] -> destroys linkage(s). Destroys the specified linkage, or linkages for the specified component. Note, it only destroys linkages registered in this postoffice. unlinkAll(self)Destroys all linkages made with this postoffice. 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