[Stackless] Suggestions about Customizing Channels with Composition rather than Inheritance
Andrew Francis
andrewfr_ice at yahoo.com
Sat Dec 9 17:34:07 CET 2006
Hello Colleagues:
I have been looking at Richard Tew's Wiki suggestions
about customising channels and tasklets (i.e.,
providing names). The examples are very useful.
Since I am haven't come up to speed concerning
pickling, I thought it would be is easier to use
composition. For example here is an example of a
channel class, ProcessorChannel that takes a name and
provides two new methods for attaching and detaching
tasklets to and from channels. I wrote
ProcessorChannel to make it easier to swap inactive
"tasklet groups" in and out of memory.
Comments would be appreciated. If this approach is
sound, I will write up a Wiki page.
Cheers,
Andrew
#!/usr/bin/env python
"""
ProcessorChannel is a wrapper for the stackless
channel.
Two differences
1. Name
2. Methods to make attaching and detaching the channel
from its tasklets easier.
"""
import stackless
class ProcessorChannel(object):
def __init__(self, name = None):
self.name = name
self.channel = stackless.channel()
self.tasklets = []
def __repr__(self):
return self.name
"""
get the underlying channel's balance
"""
def getBalance(self):
return self.channel.balance
"""
"""
def attach(self):
x, y, (balance, flags, waste) =
self.channel.__reduce__()
self.channel.__setstate__((balance, flags,
self.tasklets))
return
def detach(self):
x, y, (balance, flags, self.tasklets) =
self.channel.__reduce__()
self.channel.__setstate__((balance, flags,
[]))
return
def receive(self):
return self.channel.receive()
def send(self, message):
self.channel.send(message)
balance = property(getBalance)
____________________________________________________________________________________
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail beta.
http://new.mail.yahoo.com
_______________________________________________
Stackless mailing list
Stackless at stackless.com
http://www.stackless.com/mailman/listinfo/stackless
More information about the Stackless
mailing list