home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1782 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  2.3 KB  |  74 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import math
  5. import socket
  6. import random
  7. import sys
  8. import time
  9. import threading
  10.  
  11. make_hexip = lambda ip: []([ '%04x' % long(i) for i in ip.split('.') ])
  12. MAX_COUNTER = 0xFFFFFFFEL
  13. counter = 0x0L
  14. firstcounter = MAX_COUNTER
  15. lasttime = 0
  16. ip = ''
  17. lock = threading.RLock()
  18.  
  19. try:
  20.     ip = socket.getaddrinfo(socket.gethostname(), 0)[-1][-1][0]
  21.     hexip = make_hexip(ip)
  22. except:
  23.     ip = '10'
  24.     rand = random.Random()
  25.     for i in range(3):
  26.         ip += '.' + str(rand.randrange(1, 65535))
  27.     
  28.     hexip = make_hexip(ip)
  29.  
  30.  
  31. def generate(ip = None):
  32.     global firstcounter, counter, counter, counter, lasttime
  33.     lock.acquire()
  34.     
  35.     try:
  36.         parts = []
  37.         now = long(time.time() * 1000)
  38.         while lasttime == now and counter == firstcounter:
  39.             time.sleep(0.01)
  40.             now = long(time.time() * 1000)
  41.         parts.append('%016x' % now)
  42.         if lasttime != now:
  43.             firstcounter = long(random.uniform(1, MAX_COUNTER))
  44.             counter = firstcounter
  45.         
  46.         counter += 1
  47.         if counter > MAX_COUNTER:
  48.             counter = 0
  49.         
  50.         lasttime = now
  51.         parts.append('%08x' % counter)
  52.         parts.append(hexip)
  53.         return ''.join(parts)
  54.     finally:
  55.         lock.release()
  56.  
  57.  
  58.  
  59. def extract_time(guid):
  60.     return float(long(guid[0:16], 16)) / 1000
  61.  
  62.  
  63. def extract_counter(guid):
  64.     return int(guid[16:24], 16)
  65.  
  66.  
  67. def extract_ip(guid):
  68.     thisip = []
  69.     for index in range(24, 40, 4):
  70.         thisip.append(str(int(guid[index:index + 4], 16)))
  71.     
  72.     return '.'.join(thisip)
  73.  
  74.