def handleWork(self, work, headers, metaData, pushed=False): if work is None or headers is None: return; rollntime = headers.getRawHeaders('X-Roll-Ntime') if rollntime: rollntime = rollntime[0] if not self.saidConnected: self.saidConnected = True self.runCallback('connect') self.useAskrate('askrate') if 'block' in work: try: block = int(work['block']) except (TypeError, ValueError): pass else: if self.block != block: self.block = block self.runCallback('block', block) aw = AssignedWork() aw.data = work['data'].decode('hex')[:80] aw.target = work['target'].decode('hex') aw.mask = work.get('mask', 32) aw.rollntime = rollntime if metaData is not None: aw.requestDuration = metaData.get('duration') aw.receivedAt = metaData.get('receivedAt') if pushed: self.runCallback('push', aw) self.runCallback('work', aw)