[IMP] I don't like the duplicated code

bzr revid: christophe@taupe-20081218202801-xnin2g0yd2njwmk9
This commit is contained in:
Christophe Simonis 2008-12-18 21:28:01 +01:00
parent 5786713fb3
commit 65f7d198ec
1 changed files with 19 additions and 34 deletions

View File

@ -25,6 +25,8 @@ import time
import threading
import SimpleXMLRPCServer
from ssl import SecureXMLRPCServer
import signal
import sys
import xmlrpclib
@ -279,46 +281,29 @@ class GenericXMLRPCRequestHandler:
raise xmlrpclib.Fault(s, tb_s)
#### XML-RPC SSL ####
from ssl import SecureXMLRPCServer
class SecureXMLRPCRequestHandler(GenericXMLRPCRequestHandler, SecureXMLRPCServer.SecureXMLRPCRequestHandler):
SecureXMLRPCServer.SecureXMLRPCRequestHandler.rpc_paths = map(lambda s: '/xmlrpc/%s' % s, _service)
class SecureThreadedXMLRPCServer(SocketServer.ThreadingMixIn, SecureXMLRPCServer.SecureXMLRPCServer):
def server_bind(self):
try:
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
SecureXMLRPCServer.SecureXMLRPCServer.server_bind(self)
except:
Logger().notifyChannel('init', LOG_CRITICAL, 'Address already in use')
sys.exit(1)
#### XML-RPC ####
class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler, SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.rpc_paths = map(lambda s: '/xmlrpc/%s' % s, _service)
class SimpleThreadedXMLRPCServer(SocketServer.ThreadingMixIn, SimpleXMLRPCServer.SimpleXMLRPCServer):
def server_bind(self):
try:
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
SimpleXMLRPCServer.SimpleXMLRPCServer.server_bind(self)
except:
Logger().notifyChannel('init', LOG_CRITICAL, 'Address already in use')
sys.exit(1)
class HttpDaemon(threading.Thread):
def __init__(self, interface, port, secure=False):
threading.Thread.__init__(self)
self.__port = port
self.__interface = interface
self.secure = secure
if self.secure:
handler_class = SecureXMLRPCRequestHandler
server_class = SecureThreadedXMLRPCServer
else:
handler_class = SimpleXMLRPCRequestHandler
server_class = SimpleThreadedXMLRPCServer
self.server = server_class((interface, port), handler_class, 0)
self.secure = bool(secure)
base_handler_class = [SimpleXMLRPCServer.SimpleXMLRPCRequestHandler, SecureXMLRPCServer.SecureXMLRPCRequestHandler][self.secure]
class OpenERPXMLRPCRequestHandler(GenericXMLRPCRequestHandler, base_handler_class):
base_handler_class.rpc_paths = map(lambda s: '/xmlrpc/%s' % s, _service)
base_server_class = [SimpleXMLRPCServer.SimpleXMLRPCServer, SecureXMLRPCServer.SecureXMLRPCServer][self.secure]
class OpenERPThreadedXMLRPCServer(SocketServer.ThreadingMixIn, base_server_class):
def server_bind(self):
try:
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
base_server_class.server_bind(self)
except:
Logger().notifyChannel('init', LOG_CRITICAL, 'Address already in use')
sys.exit(1)
self.server = OpenERPThreadedXMLRPCServer((interface, port), OpenERPXMLRPCRequestHandler, 0)
def attach(self, path, gw):
pass