separated jsonrpc.Server and the object it's proxying
authorForrest Voight <forrest@forre.st>
Thu, 15 Mar 2012 21:53:22 +0000 (17:53 -0400)
committerForrest Voight <forrest@forre.st>
Thu, 15 Mar 2012 21:53:22 +0000 (17:53 -0400)
p2pool/bitcoin/worker_interface.py
p2pool/util/jsonrpc.py

index ea03d1d..2b2551d 100644 (file)
@@ -11,15 +11,15 @@ import p2pool
 from p2pool.bitcoin import getwork
 from p2pool.util import expiring_dict, jsonrpc, variable
 
-class _Page(jsonrpc.Server):
+class _Provider(object):
     def __init__(self, parent, long_poll):
-        jsonrpc.Server.__init__(self)
         self.parent = parent
         self.long_poll = long_poll
     
     def rpc_getwork(self, request, data=None):
         return self.parent._getwork(request, data, long_poll=self.long_poll)
-    
+
+class _GETableServer(jsonrpc.Server):
     def render_GET(self, request):
         request.content = StringIO.StringIO(json.dumps(dict(id=0, method='getwork')))
         return self.render_POST(request)
@@ -46,8 +46,8 @@ class WorkerInterface(object):
         self.merkle_root_to_handler = expiring_dict.ExpiringDict(300)
     
     def attach_to(self, res):
-        res.putChild('', _Page(self, long_poll=False))
-        res.putChild('long-polling', _Page(self, long_poll=True))
+        res.putChild('', _GETableServer(_Provider(self, long_poll=False)))
+        res.putChild('long-polling', _GETableServer(_Provider(self, long_poll=True)))
     
     @defer.inlineCallbacks
     def _getwork(self, request, data, long_poll):
index d6d34de..497bf8e 100644 (file)
@@ -67,6 +67,9 @@ class Proxy(object):
         raise AttributeError('%r object has no attribute %r' % (self.__class__.__name__, attr))
 
 class Server(deferred_resource.DeferredResource):
+    def __init__(self, provider):
+        self._provider = provider
+    
     @defer.inlineCallbacks
     def render_POST(self, request):
         # missing batching, 1.0 notifications
@@ -92,7 +95,7 @@ class Server(deferred_resource.DeferredResource):
             except Exception:
                 raise Error(-32600, u'Invalid Request')
             
-            method_meth = getattr(self, 'rpc_' + method, None)
+            method_meth = getattr(self._provider, 'rpc_' + method, None)
             if method_meth is None:
                 raise Error(-32601, u'Method not found')