[Twisted-Python] Adaptive Port
Index: twisted/internet/tcp.py =================================================================== RCS file: /cvs/Twisted/twisted/internet/tcp.py,v retrieving revision 1.22 diff -u -r1.22 tcp.py --- twisted/internet/tcp.py 2001/09/11 04:08:28 1.22 +++ twisted/internet/tcp.py 2001/09/19 06:49:49 @@ -277,6 +277,7 @@ """ s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) + s.setblocking(0) return s def __getstate__(self): @@ -312,12 +313,9 @@ self.connected = 1 self.socket = skt self.fileno = self.socket.fileno + self.numberAccepts = 100 self.startReading() - def getSocket(self): - skt,addr = self.socket.accept() - return skt, addr - def doRead(self): """Called when my socket is ready for reading. @@ -325,12 +323,21 @@ wire-level protocol. """ try: - skt, addr = self.getSocket() - protocol = self.factory.buildProtocol(addr) - s = self.sessionno - self.sessionno = s+1 - transport = self.transport(skt, protocol, addr, self, s) - protocol.makeConnection(transport, self) + for i in range(self.numberAccepts): + try: + skt,addr = self.socket.accept() + except socket.error, e: + if e.args[0] == EWOULDBLOCK: + self.numberAccepts = i + break + raise + protocol = self.factory.buildProtocol(addr) + s = self.sessionno + self.sessionno = s+1 + transport = self.transport(skt, protocol, addr, self, s) + protocol.makeConnection(transport, self) + else: + self.numberAccepts = self.numberAccepts+20 except: traceback.print_exc(file=log.logfile) -- The Official Moshe Zadka FAQ: http://moshez.geek The Official Moshe Zadka FAQ For Dummies: http://moshez.org Read the FAQ
participants (1)
-
Moshe Zadka