else:
return True
- reactor.listenTCP(args.worker_port, server.Site(worker_interface.WorkerInterface(current_work, compute, got_response)))
+ def get_rate():
+ if current_work.value['best_share_hash'] is not None:
+ height, last = tracker.get_height_and_last(current_work.value['best_share_hash'])
+ att_s = p2pool.get_pool_attempts_per_second(tracker, current_work.value['best_share_hash'], args.net)
+ return att_s
+
+ reactor.listenTCP(args.worker_port, server.Site(worker_interface.WorkerInterface(current_work, compute, got_response, get_rate)))
print ' ...success!'
print
id_ = 0
headers = {
- 'Content-Type': 'text/json',
+ 'Content-Type': 'application/json',
}
if self._auth is not None:
headers['Authorization'] = 'Basic ' + base64.b64encode(':'.join(self._auth))
@defer.inlineCallbacks
def render_POST(self, request):
# missing batching, 1.0 notifications
+ request.setHeader('Content-Type', 'application/json')
data = request.content.read()
if self.extra_headers is not None:
res = self.compute((yield self.work.changed.get_deferred()), 'x-all-targets' in map(str.lower, request.received_headers))
+ request.setHeader('Content-Type', 'application/json')
request.write(json.dumps({
'jsonrpc': '2.0',
'id': 0,
}))
render_POST = render_GET
+class RateInterface(deferred_resource.DeferredResource):
+ def __init__(self, get_rate):
+ self.get_rate = get_rate
+
+ def render_GET(self, request):
+ request.setHeader('Content-Type', 'application/json')
+ request.write(json.dumps(self.get_rate()))
+
class WorkerInterface(jsonrpc.Server):
extra_headers = {
'X-Long-Polling': '/long-polling',
}
- def __init__(self, work, compute, response_callback):
+ def __init__(self, work, compute, response_callback, get_rate):
jsonrpc.Server.__init__(self)
self.work = work
self.compute = compute
self.response_callback = response_callback
+ self.get_rate = get_rate
self.putChild('long-polling',
LongPollingWorkerInterface(self.work, self.compute))
+ self.putChild('rate',
+ RateInterface(get_rate))
self.putChild('', self)
def rpc_getwork(self, headers, data=None):