o2on svn commit
o2on-****@lists*****
2009年 9月 5日 (土) 08:17:48 JST
Revision: 168 http://sourceforge.jp/projects/o2on/svn/view?view=rev&revision=168 Author: nawota Date: 2009-09-05 08:17:48 +0900 (Sat, 05 Sep 2009) Log Message: ----------- boardmap に存在しないIDが登録されている場合に対処 Modified Paths: -------------- trunk/opy2on/lib/o2on_node.py Modified: trunk/opy2on/lib/o2on_node.py =================================================================== --- trunk/opy2on/lib/o2on_node.py 2009-08-16 13:39:43 UTC (rev 167) +++ trunk/opy2on/lib/o2on_node.py 2009-09-04 23:17:48 UTC (rev 168) @@ -340,7 +340,7 @@ self.glob = glob self.KBuckets = [] self.port0nodes = [] - self.lock = threading.Lock() + self.lock = threading.RLock() for x in range(0,160): self.KBuckets.append([]) self.nodes = dict() self.boardmap = dict() @@ -402,7 +402,11 @@ if len(self.boardmap[board])==0: del self.boardmap[board] return [] - return map(lambda x: self.nodes[x], self.boardmap[board]) + res = [] + for x in self.boardmap[board]: + n = self.nodes.get(x) + if n: res.append(n) + return res def get_random_board(self): with self.lock: if len(self.boardmap) == 0: return None @@ -421,13 +425,12 @@ r = None with self.lock: if not board in self.boardmap: - self.boardmap[board] = [n.id] + self.boardmap[board] = [n.id, ] elif len(self.boardmap[board])<10: self.boardmap[board].append(n.id) else: nt = self.nodes.get(self.boardmap[board][0]) if not nt: - raise Exception del self.boardmap[board][0] self.boardmap[board].append(n.id) else: