ó ¿öYc@@sÚdZddlmZddlZddlZddlZddlZddlmZmZddl m Z ddl m Z ddl mZmZdZejd ƒZd efd „ƒYZd e e fd „ƒYZdS(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(tabsolute_importN(tsleepttime(tAsyncTransport(t HTTPTransport(tQueuet check_threadsi s sentry.errorst AsyncWorkercB@sheZeƒZed„Zd„Zd„Zd„Zd„Z d„Z d d„Z d„Z d„ZRS( cC@sUtƒtdƒ|_tjƒ|_d|_d|_i|d6|_ |j ƒdS(Niÿÿÿÿtshutdown_timeout( RRt_queuet threadingtLockt_locktNonet_threadt_thread_for_pidtoptionststart(tselfR((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt__init__s   cC@s/|jtjƒkrtS|jo.|jjƒS(N(RtostgetpidtFalseRtis_alive(R((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyR(scC@s|jƒrdS|jƒdS(N(RR(R((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt_ensure_thread-s cC@sÎ|jjƒz¬|jƒs dS|jj|jƒ|jd}td|ƒ}|j|ƒs¯|jj ƒ}d|GHd|GHt j dkr–dGHndGH|j||ƒnd|_ Wd|jjƒXdS(NRgš™™™™™¹?s6Sentry is attempting to send %i pending error messagessWaiting up to %s secondstntsPress Ctrl-Break to quitsPress Ctrl-C to quit(R tacquireRR t put_nowaitt _terminatorRtmint_timed_queue_jointqsizeRtnameR Rtrelease(Rttimeouttinitial_timeouttsize((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pytmain_thread_terminated2s$     cC@s€tƒ|}|j}|jjƒzHx=|jre|tƒ}|dkrOtS|jjd|ƒq)WtSWd|jjƒXdS(s‚ implementation of Queue.join which takes a 'timeout' argument returns true on success, false on timeout iR"N( RR tall_tasks_doneRtunfinished_tasksRtwaittTrueR!(RR"tdeadlinetqueuetdelay((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyRWs      cC@s|jjƒz]|jƒsitjd|jddƒ|_|jjtƒ|jj ƒt j ƒ|_ nWd|jj ƒtj|jƒXdS(s) Starts the task thread. ttargetR sraven.AsyncWorkerN(R RRR tThreadt_targetRt setDaemonR)RRRRR!tatexittregisterR%(R((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyRos    cC@sj|jjƒzH|jrT|jj|jƒ|jjd|ƒd|_d|_nWd|jj ƒXdS(s5 Stops the task thread. Synchronous! R"N( R RRR RRtjoinR RR!(RR"((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pytstop~s   cO@s'|jƒ|jj|||fƒdS(N(RR R(Rtcallbacktargstkwargs((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyR+Œs cC@s™x’tr”|jjƒ}z^||jkr.Pn|\}}}y|||ŽWn$tk rttjddtƒnXWd|jjƒXtdƒqWdS(NsFailed processing jobtexc_infoi( R)R tgetRt Exceptiontloggerterrort task_doneR(RtrecordR5R6R7((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyR/s  N(t__name__t __module__tobjectRtDEFAULT_TIMEOUTRRRR%RRR R4R+R/(((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyRs    %    tThreadedHTTPTransportcB@s5eZddddgZd„Zd„Zd„ZRS(thttpthttpss threaded+httpsthreaded+httpscC@s6t|dƒ s |jjƒ r/tƒ|_n|jS(Nt_worker(thasattrRFRR(R((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt get_worker¥s cC@sKy tt|ƒj|||ƒWntk r?}||ƒnX|ƒdS(N(tsuperRCtsendR:(Rturltdatatheaderst success_cbt failure_cbte((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt send_syncªs  cC@s)|jƒj|j|||||ƒdS(N(RHR+RQ(RRKRLRMRNRO((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyt async_send²s (R?R@tschemeRHRQRR(((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyRC¡s  (t__doc__t __future__RR1tloggingR RRRtraven.transport.baseRtraven.transport.httpRtraven.utils.compatRRRBt getLoggerR;RARRC(((sI/opt/alt/python27/lib/python2.7/site-packages/raven/transport/threaded.pyts    ‡