MCPcopy Index your code
hub / github.com/Bitmessage/PyBitmessage / objectHashHolder

Class objectHashHolder

src/class_objectHashHolder.py:14–54  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12import threading
13
14class objectHashHolder(threading.Thread):
15 size = 10
16 def __init__(self, sendDataThreadMailbox):
17 threading.Thread.__init__(self, name="objectHashHolder")
18 self.shutdown = False
19 self.sendDataThreadMailbox = sendDataThreadMailbox # This queue is used to submit data back to our associated sendDataThread.
20 self.collectionOfHashLists = []
21 self.collectionOfPeerLists = []
22 for i in range(objectHashHolder.size):
23 self.collectionOfHashLists.append([])
24 self.collectionOfPeerLists.append([])
25
26 def run(self):
27 iterator = 0
28 while not self.shutdown:
29 if len(self.collectionOfHashLists[iterator]) > 0:
30 self.sendDataThreadMailbox.put((0, 'sendinv', self.collectionOfHashLists[iterator]))
31 self.collectionOfHashLists[iterator] = []
32 if len(self.collectionOfPeerLists[iterator]) > 0:
33 self.sendDataThreadMailbox.put((0, 'sendaddr', self.collectionOfPeerLists[iterator]))
34 self.collectionOfPeerLists[iterator] = []
35 iterator += 1
36 iterator %= objectHashHolder.size
37 time.sleep(1)
38
39 def holdHash(self,hash):
40 self.collectionOfHashLists[random.randrange(0, objectHashHolder.size)].append(hash)
41
42 def hasHash(self, hash):
43 if hash in (hashlist for hashlist in self.collectionOfHashLists):
44 return True
45 return False
46
47 def holdPeer(self,peerDetails):
48 self.collectionOfPeerLists[random.randrange(0, objectHashHolder.size)].append(peerDetails)
49
50 def hashCount(self):
51 return sum([len(x) for x in self.collectionOfHashLists if type(x) is list])
52
53 def close(self):
54 self.shutdown = True

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected