import stackless
import sys 

"""
test5.py

the purpose of this test is to check whether select will properly
block, unblock and return the correct value
"""
RECEIVE = -1
SEND = 1

def sender(ch):
    stackless.schedule()      #ensure that selector goes first
    ch.send("hello world")
    print "Sender done"


def selector(list):
    try:
       channel, result = stackless.select(list)
       print "THE RESULT FROM SELECT ->", channel, result
    except:
       print sys.exc_info()

if __name__ == "__main__":
   list = []

   list.append((stackless.channel(),RECEIVE, None))
   list.append((stackless.channel(),RECEIVE, None))
   list.append((stackless.channel(),RECEIVE, None))
   list.append((stackless.channel(),RECEIVE, None))
   list.append((stackless.channel(),RECEIVE, None))

   stackless.tasklet(selector)(list)
   stackless.tasklet(sender)(list[0][0])
   stackless.run()
   print "THE PROGRAMMING IS ENDING"
   

