#!/usr/bin/env python
#Asynchronous Echo Server
#filename:echoserver.py
import socket,traceback,os,sys,select
class stateclass:
stdmask = select.POLLERR|select.POLLHUP|select.POLLNVAL
def __init__(self,mastersock):
#Initialize the state class
self.p = select.poll()
self.mastersock = mastersock
self.watchread(mastersock.fileno())
self.buffers = {}
self.sockets = {mastersock.fileno():mastersock}
def fd2socket(self,fd):
return self.sockets[fd]
def watchread(self,fd):
self.p.register(fd,select.POLLIN|self.stdmask)
def watchwrite(self,fd):
self.p.register(fd,select.POLLOUT|self.stdmask)
def watchboth(self,fd):
self.p.register(fd,select.POLLIN|select.POLLOUT|self.stdmask)
def dontwatch(self,fd):
self.p.unregister(fd)
def newconn(self,