From cfd194c028656a56db5e226bc35255ce26b65fe1 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Thu, 18 Dec 2008 19:13:41 +0100 Subject: [PATCH] [REF] Refactoring bzr revid: stephane@tinyerp.com-20081218181341-dshfntv4olwgcbyx --- bin/netsvc.py | 72 +++++++++++++++-------------------- bin/openerp-server.py | 4 -- bin/ssl/SecureXMLRPCServer.py | 4 +- 3 files changed, 33 insertions(+), 47 deletions(-) diff --git a/bin/netsvc.py b/bin/netsvc.py index 7496a9703c0..56a4837ada6 100644 --- a/bin/netsvc.py +++ b/bin/netsvc.py @@ -24,7 +24,10 @@ import time import threading -import SimpleXMLRPCServer, signal, sys, xmlrpclib +import SimpleXMLRPCServer +import signal +import sys +import xmlrpclib import SocketServer import socket import logging @@ -249,23 +252,6 @@ class Agent(object): timer.cancel() quit = classmethod(quit) - -class RpcGateway(object): - def __init__(self, name): - self.name = name - - -class Dispatcher(object): - def __init__(self): - pass - - def monitor(self, signal): - pass - - def run(self): - pass - - class xmlrpc(object): class RpcGateway(object): def __init__(self, name): @@ -273,22 +259,30 @@ class xmlrpc(object): class GenericXMLRPCRequestHandler: + def log(self, title, msg): + from pprint import pformat + Logger().notifyChannel('XMLRPC-%s' % title, LOG_DEBUG_RPC, pformat(msg)) + def _dispatch(self, method, params): -# print 'TERP-CALL : ',method, params import traceback + traceback.print_stack() try: + self.log('method', method) + self.log('params', params) n = self.path.split("/")[-1] s = LocalService(n) m = getattr(s, method) s._service._response = None r = m(*params) + self.log('result', r) res = s._service._response - if res != None: + if res is not None: r = res + self.log('res',r) return r except Exception, e: - tb_s = reduce(lambda x, y: x+y, traceback.format_exception( - sys.exc_type, sys.exc_value, sys.exc_traceback)) + self.log('exception', e) + tb_s = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)) s = str(e) import tools if tools.config['debug_mode']: @@ -297,22 +291,7 @@ class GenericXMLRPCRequestHandler: pdb.post_mortem(tb) raise xmlrpclib.Fault(s, tb_s) - -class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler, SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): - SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.rpc_paths = get_rpc_paths() - -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 @@ -330,14 +309,23 @@ class HttpDaemon(threading.Thread): self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) SecureXMLRPCServer.SecureXMLRPCServer.server_bind(self) except: - sys.stderr.write("ERROR: address already in use\n") + Logger().notifyChannel('init', LOG_CRITICAL, 'Address already in use') sys.exit(1) - self.server = SecureThreadedXMLRPCServer((interface, port), - SecureXMLRPCRequestHandler, 0) + self.server = SecureThreadedXMLRPCServer((interface, port), SecureXMLRPCRequestHandler, 0) else: - self.server = SimpleThreadedXMLRPCServer((interface, port), - SimpleXMLRPCRequestHandler, 0) + class SimpleXMLRPCRequestHandler(GenericXMLRPCRequestHandler, SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): + SimpleXMLRPCServer.SimpleXMLRPCRequestHandler.rpc_paths = get_rpc_paths() + + 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) + self.server = SimpleThreadedXMLRPCServer((interface, port), SimpleXMLRPCRequestHandler, 0) def attach(self, path, gw): pass diff --git a/bin/openerp-server.py b/bin/openerp-server.py index f52d8415d6d..951b994d9b7 100755 --- a/bin/openerp-server.py +++ b/bin/openerp-server.py @@ -76,9 +76,6 @@ if sys.platform == 'win32': #---------------------------------------------------------- logger.notifyChannel("objects", netsvc.LOG_INFO, 'initialising distributed objects services') -dispatcher = netsvc.Dispatcher() -dispatcher.monitor(signal.SIGINT) - #--------------------------------------------------------------- # connect to the database and initialize it with base if needed #--------------------------------------------------------------- @@ -214,7 +211,6 @@ if tools.config['netrpc']: tinySocket.start() if tools.config['xmlrpc']: httpd.start() -#dispatcher.run() while True: time.sleep(1) diff --git a/bin/ssl/SecureXMLRPCServer.py b/bin/ssl/SecureXMLRPCServer.py index e8493ba6adb..bdcf11d4fc2 100644 --- a/bin/ssl/SecureXMLRPCServer.py +++ b/bin/ssl/SecureXMLRPCServer.py @@ -32,7 +32,9 @@ This code is in the public domain and is provided AS-IS WITH NO WARRANTY WHATSOEVER. """ import SocketServer -import os, socket, sys +import os +import socket +import sys import SimpleXMLRPCServer from OpenSSL import SSL