home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import math
- import socket
- import random
- import sys
- import time
- import threading
-
- make_hexip = lambda ip: []([ '%04x' % long(i) for i in ip.split('.') ])
- MAX_COUNTER = 0xFFFFFFFEL
- counter = 0x0L
- firstcounter = MAX_COUNTER
- lasttime = 0
- ip = ''
- lock = threading.RLock()
-
- try:
- ip = socket.getaddrinfo(socket.gethostname(), 0)[-1][-1][0]
- hexip = make_hexip(ip)
- except:
- ip = '10'
- rand = random.Random()
- for i in range(3):
- ip += '.' + str(rand.randrange(1, 65535))
-
- hexip = make_hexip(ip)
-
-
- def generate(ip = None):
- global firstcounter, counter, counter, counter, lasttime
- lock.acquire()
-
- try:
- parts = []
- now = long(time.time() * 1000)
- while lasttime == now and counter == firstcounter:
- time.sleep(0.01)
- now = long(time.time() * 1000)
- parts.append('%016x' % now)
- if lasttime != now:
- firstcounter = long(random.uniform(1, MAX_COUNTER))
- counter = firstcounter
-
- counter += 1
- if counter > MAX_COUNTER:
- counter = 0
-
- lasttime = now
- parts.append('%08x' % counter)
- parts.append(hexip)
- return ''.join(parts)
- finally:
- lock.release()
-
-
-
- def extract_time(guid):
- return float(long(guid[0:16], 16)) / 1000
-
-
- def extract_counter(guid):
- return int(guid[16:24], 16)
-
-
- def extract_ip(guid):
- thisip = []
- for index in range(24, 40, 4):
- thisip.append(str(int(guid[index:index + 4], 16)))
-
- return '.'.join(thisip)
-
-