| 96 | self.hashMap[k] = Stem(None, v.stream, self.poissonTimeout()) |
| 97 | |
| 98 | def pickStem(self, parent=None): |
| 99 | try: |
| 100 | # pick a random from available stems |
| 101 | stem = choice(range(len(self.stem))) |
| 102 | if self.stem[stem] == parent: |
| 103 | # one stem available and it's the parent |
| 104 | if len(self.stem) == 1: |
| 105 | return None |
| 106 | # else, pick the other one |
| 107 | return self.stem[1 - stem] |
| 108 | # all ok |
| 109 | return self.stem[stem] |
| 110 | except IndexError: |
| 111 | # no stems available |
| 112 | return None |
| 113 | |
| 114 | def getNodeStem(self, node=None): |
| 115 | with self.lock: |