[Twisted-Python] Adaptive Port
Moshe Zadka
m at moshez.org
Wed Sep 19 01:01:42 MDT 2001
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
More information about the Twisted-Python
mailing list