£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>

Yc           @@  s   d  Z  d d l m Z d d l Z d d l Z d d l Z d d l Z d d l m Z m Z d d l	 m
 Z
 d d l m Z d d l m Z m Z d Z e j d	  Z d
 e f d     YZ d e
 e f d     YZ d S(   s   
raven.transport.threaded
~~~~~~~~~~~~~~~~~~~~~~~~

:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
:license: BSD, see LICENSE for more details.
i    (   t   absolute_importN(   t   sleept   time(   t   AsyncTransport(   t   HTTPTransport(   t   Queuet   check_threadsi
   s   sentry.errorst   AsyncWorkerc           B@  sh   e  Z e   Z e d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	 d  Z d   Z d   Z RS(
   c         C@  sU   t    t d  |  _ t j   |  _ d  |  _ d  |  _ i | d 6|  _	 |  j
   d  S(   Nit   shutdown_timeout(   R   R   t   _queuet	   threadingt   Lockt   _lockt   Nonet   _threadt   _thread_for_pidt   optionst   start(   t   selfR   (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt   __init__   s    		c         C@  s/   |  j  t j   k r t S|  j o. |  j j   S(   N(   R   t   ost   getpidt   FalseR   t   is_alive(   R   (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyR   (   s    c         C@  s   |  j    r d  S|  j   d  S(   N(   R   R   (   R   (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt   _ensure_thread-   s    c         C@  s   |  j  j   z |  j   s  d  S|  j j |  j  |  j d } t d |  } |  j |  s |  j j	   } d | GHd | GHt
 j d k r d GHn d GH|  j | |  n  d  |  _ Wd  |  j  j   Xd  S(   NR   g?s6   Sentry is attempting to send %i pending error messagess   Waiting up to %s secondst   nts   Press Ctrl-Break to quits   Press Ctrl-C to quit(   R   t   acquireR   R	   t
   put_nowaitt   _terminatorR   t   mint   _timed_queue_joint   qsizeR   t   nameR   R   t   release(   R   t   timeoutt   initial_timeoutt   size(    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt   main_thread_terminated2   s$    	c         C@  s   t    | } |  j } | j j   zH x= | j re | t    } | d k rO t S| j j d |  q) Wt SWd | j j   Xd S(   s   
        implementation of Queue.join which takes a 'timeout' argument

        returns true on success, false on timeout
        i    R"   N(	   R   R	   t   all_tasks_doneR   t   unfinished_tasksR   t   waitt   TrueR!   (   R   R"   t   deadlinet   queuet   delay(    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyR   W   s    	c         C@  s   |  j  j   z] |  j   si t j d |  j d d  |  _ |  j j t  |  j j	   t
 j   |  _ n  Wd |  j  j   t j |  j  Xd S(   s)   
        Starts the task thread.
        t   targetR    s   raven.AsyncWorkerN(   R   R   R   R
   t   Threadt   _targetR   t	   setDaemonR)   R   R   R   R   R!   t   atexitt   registerR%   (   R   (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyR   o   s    c         C@  sj   |  j  j   zH |  j rT |  j j |  j  |  j j d |  d |  _ d |  _ n  Wd |  j  j	   Xd S(   s5   
        Stops the task thread. Synchronous!
        R"   N(
   R   R   R   R	   R   R   t   joinR   R   R!   (   R   R"   (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt   stop~   s    		c         O@  s'   |  j    |  j j | | | f  d  S(   N(   R   R	   R   (   R   t   callbackt   argst   kwargs(    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyR+      s    
c         C@  s   x t  r |  j j   } z^ | |  j k r. Pn  | \ } } } y | | |   Wn$ t k
 rt t j d d t  n XWd  |  j j   Xt d  q Wd  S(   Ns   Failed processing jobt   exc_infoi    (	   R)   R	   t   getR   t	   Exceptiont   loggert   errort	   task_doneR   (   R   t   recordR5   R6   R7   (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyR/      s    	N(   t   __name__t
   __module__t   objectR   t   DEFAULT_TIMEOUTR   R   R   R%   R   R   R   R4   R+   R/   (    (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyR      s   				%			t   ThreadedHTTPTransportc           B@  s5   e  Z d  d d d g Z d   Z d   Z d   Z RS(   t   httpt   httpss   threaded+https   threaded+httpsc         C@  s6   t  |  d  s  |  j j   r/ t   |  _ n  |  j S(   Nt   _worker(   t   hasattrRF   R   R   (   R   (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt
   get_worker   s     c         C@  sK   y  t  t |   j | | |  Wn t k
 r? } | |  n X|   d  S(   N(   t   superRC   t   sendR:   (   R   t   urlt   datat   headerst
   success_cbt
   failure_cbt   e(    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt	   send_sync   s
     c         C@  s)   |  j    j |  j | | | | |  d  S(   N(   RH   R+   RQ   (   R   RK   RL   RM   RN   RO   (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt
   async_send   s    (   R?   R@   t   schemeRH   RQ   RR   (    (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyRC      s   		(   t   __doc__t
   __future__R    R1   t   loggingR
   R   R   R   t   raven.transport.baseR   t   raven.transport.httpR   t   raven.utils.compatR   R   RB   t	   getLoggerR;   RA   R   RC   (    (    (    sI   /opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt   <module>   s   