Hi Steve,
On Saturday 04 April 2009 23:30:14 Steve wrote:
> I look forward to any thoughts or comments you might have on these
> components.
For various (personal) reasons I won't be able to review this until Friday
this week. Generally they look good though and would be welcome additions.
There are a variety of changes and improvements I'd make, some which are
stylistic, but some others would improve reuse.
As an example of what I mean, I'd probably change SingleTick to be more like
this:
class SingleTick(Axon.ThreadedComponent.threadedcomponent):
'''
This threaded component will wait "delay" seconds then send True out it's
outbox and shutdown. You can specify an optional "check_interval" which
will cause the component to periodically check it's control inbox for
early termination signals.
'''
Inboxes = {
"inbox": "Ignored",
"control": "Sending a message here will cause the component to
terminate",
}
Outboxes = {
"outbox" : "If the delay is reached uninterrupted the tickmessage -
default 'True' is sent here",
"signal" : "producerFinished() if not interrrupted, otherwise the
interruption/termination message",
}
tickmessage = True
delay = 1
check_interval = None
def __init__(self, **argd):
super(SingleTick, self).__init__(**argd)
if self.check_interval is None or self.check_interval > self.delay:
self.check_interval = self.delay
def main(self):
delay_until = time.time() + self.delay
self.pause(self.check_interval)
now = time.time()
while not self.dataReady('control') now < delay_until:
remainder = delay_until - now
if remainder < self.check_interval and remainder > 0:
self.pause(remainder)
else:
self.pause(self.check_interval)
now = time.time()
if self.dataReady('control'):
self.send(self.recv('control'), 'signal')
else:
self.send(self.tickmessage, 'outbox')
self.send(producerFinished(self), 'signal')
The differences here include:
* More meta data around use of inboxes & outboxes. (Enabling the doc
generator to extract this)
- eg http://www.kamaelia.org/Components/pydoc/Kamaelia.File.Append.Append
* Use of class attributes to provide default values, and enabling the
**argd code to override the default values.
- cf http://www.kamaelia.org/InheritableDefaultValues
* Logic change in loop to make the code paths clearer.
Regards,
Michael.
--
http://yeoldeclue.com/blog
http://twitter.com/kamaelian
http://www.kamaelia.org/Home
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"kamaelia" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/kamaelia?hl=en
-~----------~----~----~----~------~----~------~--~---