From: Forrest Voight Date: Wed, 10 Aug 2011 04:57:11 +0000 (-0400) Subject: added methods to Tracker to be notified on items being added or removed. added a... X-Git-Tag: 0.8.2~207^2~48 X-Git-Url: https://git.novaco.in/?a=commitdiff_plain;h=838a9970cc4f71cbb6c6ec7dfa1f430d0b6f83e3;p=p2pool.git added methods to Tracker to be notified on items being added or removed. added a method to OkayTracker to immediately push an item into the verified collection. --- diff --git a/p2pool/bitcoin/data.py b/p2pool/bitcoin/data.py index b6886b4..183b912 100644 --- a/p2pool/bitcoin/data.py +++ b/p2pool/bitcoin/data.py @@ -5,7 +5,7 @@ import itertools import struct from . import base58, skiplists -from p2pool.util import bases, math, skiplist +from p2pool.util import bases, math, skiplist, variable import p2pool class EarlyEnd(Exception): @@ -481,6 +481,9 @@ class Tracker(object): ''' self.get_nth_parent_hash = skiplists.DistanceSkipList(self) + + self.added = variable.Event() + self.removed = variable.Event() def add(self, share): assert not isinstance(share, (int, long, type(None))) @@ -523,6 +526,8 @@ class Tracker(object): for head in heads: self.heads[head] = tail + + self.added.happened(share) def test(self): t = Tracker() @@ -625,6 +630,7 @@ class Tracker(object): self.reverse_shares.pop(share.previous_hash) #assert self.test() is None + self.removed.happened(share) def get_height(self, share_hash): height, work, last = self.get_height_work_and_last(share_hash) diff --git a/p2pool/data.py b/p2pool/data.py index 2827649..0bfba83 100644 --- a/p2pool/data.py +++ b/p2pool/data.py @@ -279,6 +279,11 @@ class OkayTracker(bitcoin_data.Tracker): self.verified = bitcoin_data.Tracker() self.get_cumulative_weights = skiplists.WeightsSkipList(self) + + def add(self, share, known_verified=False): + bitcoin_data.Tracker.add(self, share) + if known_verified: + self.verified.add(share) def attempt_verify(self, share, now): if share.hash in self.verified.shares: