From o2on-svn @ lists.sourceforge.jp Sat Oct 31 00:25:21 2009 From: o2on-svn @ lists.sourceforge.jp (o2on svn commit) Date: Sat, 31 Oct 2009 00:25:21 +0900 Subject: [o2on-svn] =?utf-8?b?WzE3Nl0gIGJpdCDoqIjnrpfjga7pq5jpgJ/ljJbjgII=?= Message-ID: <1256916321.250901.31785.nullmailer@users.sourceforge.jp> Revision: 176 http://sourceforge.jp/projects/o2on/svn/view?view=rev&revision=176 Author: nawota Date: 2009-10-31 00:25:21 +0900 (Sat, 31 Oct 2009) Log Message: ----------- bit 計算の高速化。 Modified Paths: -------------- trunk/opy2on/lib/o2on_key.py trunk/opy2on/lib/o2on_node.py Modified: trunk/opy2on/lib/o2on_key.py =================================================================== --- trunk/opy2on/lib/o2on_key.py 2009-09-30 09:07:22 UTC (rev 175) +++ trunk/opy2on/lib/o2on_key.py 2009-10-30 15:25:21 UTC (rev 176) @@ -25,6 +25,8 @@ import o2on_node def my_replace_handler(inst): + if inst.end-inst.start == 1: + return ((u"\u0000", inst.start+1)) return ((u"\u30fb", inst.start+2)) try: Modified: trunk/opy2on/lib/o2on_node.py =================================================================== --- trunk/opy2on/lib/o2on_node.py 2009-09-30 09:07:22 UTC (rev 175) +++ trunk/opy2on/lib/o2on_node.py 2009-10-30 15:25:21 UTC (rev 176) @@ -9,7 +9,7 @@ import re import urllib2 import cPickle -from struct import unpack, pack +from struct import unpack, pack, calcsize from binascii import unhexlify, hexlify import httplib import socket @@ -56,16 +56,22 @@ regIP = re.compile(r'(\d+)\.(\d+)\.(\d+)\.(\d+)') m = regIP.match(ip) if not m: raise Exception - return hexlify(aesobj.encrypt(pack("B", int(m.group(1)))+ - pack("B", int(m.group(2)))+ - pack("B", int(m.group(3)))+ - pack("B", int(m.group(4)))+"\x00"*12)[:4]) + return hexlify(aesobj.encrypt(pack("4B", int(m.group(1)), + int(m.group(2)), int(m.group(3)), + int(m.group(4)))+"\x00"*12)[:4]) def hash_xor(a,b): res = "" - for i in range(0,len(a)): - res += chr(ord(a[i]) ^ ord(b[i])) - return res + if(len(a) != 20 or len(b) != 20): raise Exception() + if calcsize("L") == 8 and calcsize("I") == 4: + resa = unpack("2LI", a) + resb = unpack("2LI", b) + return pack("2LI", resa[0] ^ resb[0], resa[1] ^ resb[1], resa[2] ^ resb[2]) + elif calcsize("Q") == 8 and calcsize("L") == 4: + resa = unpack("2QL", a) + resb = unpack("2QL", b) + return pack("2QL", resa[0] ^ resb[0], resa[1] ^ resb[1], resa[2] ^ resb[2]) + else: raise Exception() def hash_bittest(x, pos): return (((ord(x[pos/8]) >> (pos%8)) & 0x01 != 0)) From o2on-svn @ lists.sourceforge.jp Sat Nov 7 16:04:58 2009 From: o2on-svn @ lists.sourceforge.jp (o2on svn commit) Date: Sat, 07 Nov 2009 16:04:58 +0900 Subject: [o2on-svn] =?utf-8?b?WzE3N10gIERhdERCIOOBruWGjeani+evieOCkui1tw==?= =?utf-8?b?5YuV5b6M44Gr6KGM44Gq44GG44KI44GG44Gr44CC?= Message-ID: <1257577498.729338.19738.nullmailer@users.sourceforge.jp> Revision: 177 http://sourceforge.jp/projects/o2on/svn/view?view=rev&revision=177 Author: nawota Date: 2009-11-07 16:04:58 +0900 (Sat, 07 Nov 2009) Log Message: ----------- DatDB の再構築を起動後に行なうように。 Modified Paths: -------------- trunk/opy2on/lib/o2on_dat.py trunk/opy2on/lib/o2on_job.py trunk/opy2on/opy2on.py Modified: trunk/opy2on/lib/o2on_dat.py =================================================================== --- trunk/opy2on/lib/o2on_dat.py 2009-10-30 15:25:21 UTC (rev 176) +++ trunk/opy2on/lib/o2on_dat.py 2009-11-07 07:04:58 UTC (rev 177) @@ -162,15 +162,23 @@ self.hashmap = {} self.boardmap = {} self.publishmap = {} + self.need_rebuild = False self.load() if len(self.hashmap) == 0: - g.logger.log("DATDB", "Generating DatDB") - self.generate() - self.save() - g.logger.log("DATDB","Generated DatDB") + self.need_rebuild = True def __len__(self): with self.lock: return len(self.hashmap) + def checkrebuild(self): + with self.lock: + tmp = self.need_rebuild + if tmp: + self.glob.logger.log("DATDB", "Generating DatDB") + self.generate() + self.save() + self.glob.logger.log("DATDB","Generated DatDB") + with self.lock: + self.need_rebuild = False def getRandomInBoard(self,board): if board in self.boardmap: h = random.choice(self.boardmap[board]) Modified: trunk/opy2on/lib/o2on_job.py =================================================================== --- trunk/opy2on/lib/o2on_job.py 2009-10-30 15:25:21 UTC (rev 176) +++ trunk/opy2on/lib/o2on_job.py 2009-11-07 07:04:58 UTC (rev 177) @@ -404,6 +404,13 @@ nodedb.save() self.glob.keyquery.save() +class RebuildDatDBThread(JobThread): + def __init__(self, g): + JobThread.__init__(self,"rebuild dat DB",60,g) + def dojob(self, nodes, logger, prof, datdb, datq): + datdb.checkrebuild() + self.finish = True + # Server thread class ProxyServerThread(JobThread): Modified: trunk/opy2on/opy2on.py =================================================================== --- trunk/opy2on/opy2on.py 2009-10-30 15:25:21 UTC (rev 176) +++ trunk/opy2on/opy2on.py 2009-11-07 07:04:58 UTC (rev 177) @@ -151,6 +151,7 @@ o2on_job.SearchThread(glob), o2on_job.DatQueryThread(glob), o2on_job.P2PServerThread(glob), + o2on_job.RebuildDatDBThread(glob), ) for j in jobs: j.start()