[o2on-svn] [168] boardmap に存在しないIDが登録されている場合に対処

Back to archive index

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:




o2on-svn メーリングリストの案内
Back to archive index