home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2012 January / maximum-cd-2012-01.iso / DiscContents / digsby_setup.exe / lib / oscar / Snactivator.pyo (.txt) < prev   
Encoding:
Python Compiled Bytecode  |  2011-10-05  |  2.6 KB  |  93 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. from __future__ import with_statement
  5. from itertools import count
  6. from traceback import print_exc
  7. from util import TimeOut
  8. from util.primitives.structures import PriorityQueue, EmptyQueue
  9. import logging
  10. log = logging.getLogger('oscar.snactivator')
  11.  
  12. class Snactivator(TimeOut):
  13.     ids = count()
  14.     
  15.     def __init__(self, socket):
  16.         TimeOut.__init__(self)
  17.         self.socket = socket
  18.         self.queues = [ PriorityQueue() for __ in xrange(len(socket.rate_classes)) ]
  19.  
  20.     
  21.     def send_snac(self, snac, priority = 5):
  22.         if self.finished():
  23.             log.error("Snactivator can't send this snace, because it's finished: %r", snac)
  24.             return None
  25.         rclass = self.socket.snac_rate_class(*snac)
  26.         if not rclass:
  27.             return self.socket._send_snac(snac)
  28.         self._cv.__enter__()
  29.         
  30.         try:
  31.             queue = self.queues[self.socket.rate_classes.index(rclass)]
  32.             queue.append(snac, priority)
  33.             self._cv.notify()
  34.         finally:
  35.             pass
  36.  
  37.  
  38.     send_snac_first = send_snac
  39.     
  40.     def compute_timeout(self):
  41.         if self.finished():
  42.             self._last_computed = -1
  43.             self.socket = None
  44.         else:
  45.             times = []
  46.             for q in (lambda .0: for queue in .0:
  47. if queue:
  48. queuecontinue)(self.queues):
  49.                 snac = q.peek()
  50.                 t = self.socket.time_to_send(snac)
  51.                 times.append(t)
  52.             
  53.             if not times:
  54.                 pass
  55.             self._last_computed = min([
  56.                 5])
  57.         return self._last_computed
  58.  
  59.     
  60.     def process(self):
  61.         for q in self.queues:
  62.             if not q:
  63.                 continue
  64.             
  65.             
  66.             try:
  67.                 snac = q.peek()
  68.             except EmptyQueue:
  69.                 continue
  70.  
  71.             t = self.socket.time_to_send(snac)
  72.             if t == 0 and not self.finished():
  73.                 
  74.                 try:
  75.                     snac = q.next()
  76.                 except Exception:
  77.                     return None
  78.  
  79.                 
  80.                 try:
  81.                     self.socket._send_snac(snac)
  82.                 except Exception:
  83.                     print_exc()
  84.                     self.socket.test_connection()
  85.                 except:
  86.                     None<EXCEPTION MATCH>Exception
  87.                 
  88.  
  89.             None<EXCEPTION MATCH>Exception
  90.         
  91.  
  92.  
  93.