polish up

This commit is contained in:
Tobias Oberstein
2014-02-16 14:29:51 +01:00
parent 02f6f3ed2b
commit ab47a69f26

View File

@@ -16,6 +16,7 @@
##
###############################################################################
import sys
import os
import socket
@@ -25,10 +26,32 @@ from autobahn.twisted.websocket import WebSocketServerProtocol, \
class CustomPort(tcp.Port):
def __init__(self, port, factory, backlog = 50, interface = '', reactor = None, reuse = False):
tcp.Port.__init__(self, port, factory, backlog, interface, reactor)
self._reuse = reuse
def createInternetSocket(self):
s = tcp.Port.createInternetSocket(self)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
#s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
if self._reuse:
##
## reuse IP Port
##
if 'bsd' in sys.platform or \
sys.platform.startswith('linux') or \
sys.platform.startswith('darwin'):
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
elif sys.platform == 'win32':
## on Windows, REUSEADDR already implies REUSEPORT
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
else:
raise Exception("don't know how to set SO_RESUSEPORT on platform {}".format(sys.platform))
return s
@@ -68,7 +91,7 @@ if __name__ == '__main__':
#reactor.listenTCP(9000, factory)
p = CustomPort(9000, factory)
p = CustomPort(9000, factory, reuse = True)
p.startListening()
print p