sfaprotocol is renamed into sfaserverproxy, with class SfaServerProxy
[sfa.git] / sfa / client / sfaserverproxy.py
similarity index 79%
rename from sfa/client/sfaprotocol.py
rename to sfa/client/sfaserverproxy.py
index 3c8bb4f..18b7713 100644 (file)
@@ -7,7 +7,7 @@ try:
     from sfa.util.sfalogging import logger
 except:
     import logging
-    logger=logging.getLogger('sfaprotocol')
+    logger=logging.getLogger('sfaserverproxy')
 
 ##
 # ServerException, ExceptionUnmarshaller
@@ -91,7 +91,25 @@ class XMLRPCServerProxy(xmlrpclib.ServerProxy):
         logger.debug ("xml-rpc %s method:%s"%(self.url,attr))
         return xmlrpclib.ServerProxy.__getattr__(self, attr)
 
-def server_proxy(url, key_file, cert_file, timeout=None, verbose=False):
-    transport = XMLRPCTransport(key_file, cert_file, timeout)
-    return XMLRPCServerProxy(url, transport, allow_none=True, verbose=verbose)
+########## the object on which we can send methods that get sent over xmlrpc
+class SfaServerProxy:
+
+    def __init__ (self, url, keyfile, certfile, verbose=False, timeout=None):
+        self.url=url
+        self.keyfile=keyfile
+        self.certfile=certfile
+        self.verbose=verbose
+        self.timeout=timeout
+        # an instance of xmlrpclib.ServerProxy
+        transport = XMLRPCTransport(keyfile, certfile, timeout)
+        self.serverproxy = XMLRPCServerProxy(url, transport, allow_none=True, verbose=verbose)
+
+    # this is python magic to return the code to run when 
+    # SfaServerProxy receives a method call
+    # so essentially we send the same method with identical arguments
+    # to the server_proxy object
+    def __getattr__(self, name):
+        def func(*args, **kwds):
+            return getattr(self.serverproxy, name)(*args, **kwds)
+        return func