X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/python-jsonrpclib.git/blobdiff_plain/1cb797f048ae5131a01086a93d87952c03e8abe7..58b2e395701c50acb1db488108aadb3a4066eb09:/jsonrpclib/SimpleJSONRPCServer.py?ds=sidebyside diff --git a/jsonrpclib/SimpleJSONRPCServer.py b/jsonrpclib/SimpleJSONRPCServer.py index 75193b2..854697b 100644 --- a/jsonrpclib/SimpleJSONRPCServer.py +++ b/jsonrpclib/SimpleJSONRPCServer.py @@ -2,10 +2,16 @@ import jsonrpclib from jsonrpclib import Fault import SimpleXMLRPCServer import SocketServer +import socket +import os import types import traceback -import fcntl import sys +try: + import fcntl +except ImportError: + # For Windows + fcntl = None def get_version(request): # must be a dict @@ -173,18 +179,27 @@ class SimpleJSONRPCRequestHandler( self.wfile.flush() self.connection.shutdown(1) -class SimpleJSONRPCServer(SocketServer.TCPServer, - SimpleJSONRPCDispatcher): +class SimpleJSONRPCServer(SocketServer.TCPServer, SimpleJSONRPCDispatcher): allow_reuse_address = True def __init__(self, addr, requestHandler=SimpleJSONRPCRequestHandler, - logRequests=True, encoding=None, bind_and_activate=True): + logRequests=True, encoding=None, bind_and_activate=True, + address_family=socket.AF_INET): self.logRequests = logRequests SimpleJSONRPCDispatcher.__init__(self, encoding) # TCPServer.__init__ has an extra parameter on 2.6+, so # check Python version and decide on how to call it vi = sys.version_info + self.address_family = address_family + if address_family == socket.AF_UNIX: + # Unix sockets can't be bound if they already exist in the + # filesystem. The convention of e.g. X11 is to unlink + # before binding again. + try: + os.unlink(addr) + except OSError: + pass # if python 2.5 and lower if vi[0] < 3 and vi[1] < 6: SocketServer.TCPServer.__init__(self, addr, requestHandler) @@ -209,10 +224,3 @@ class CGIJSONRPCRequestHandler(SimpleJSONRPCDispatcher): sys.stdout.write(response) handle_xmlrpc = handle_jsonrpc - -if __name__ == '__main__': - print 'Running JSON-RPC server on port 8000' - server = SimpleJSONRPCServer(("localhost", 8000)) - server.register_function(pow) - server.register_function(lambda x,y: x+y, 'add') - server.serve_forever()