PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  4h^c@sIddlZdddYZdd dYZdd dYZdS( iNtProxycBs2eZdZdZdZdZdZRS(s` Class for wrapping a shared resource object and getting notified when it's deleted cKs"||_|jdd|_dS(Nt on_delete(tobjecttgettNoneR(tselfRtkwargs((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyt__init__s cCs|jr|jndS(N(R(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyt__del__ s cCst|j|S(N(tgetattrR(Rtname((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyt __getattr__scCs|jS(N(R(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyt_gets(t__name__t __module__t__doc__RRR R (((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyRs    tReferenceCountercBs2eZdZdZdZdZdZRS(s8 Class for tracking references to a shared resource cKs'|d|_|d|_d|_dS(Nt on_non_zeroton_zeroi(RRt ref_count(RR((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyRs  cCs|jS(N(R(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyt get_countscCs0|jdkr|jn|jd|_dS(Nii(RR(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyt increment"s cCsM|jdkrtdn|jd8_|jdkrI|jndS(Nis.Illegal operation: cannot decrement below zeroi(Rt ExceptionR(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyt decrement's (R RRRRRR(((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyRs    t SocketManagercBs_eZdZdZdZdZdZdZdZdZ dZ d Z RS( s Class for managing sockets in servers that create/bind/listen before forking multiple child processes to accept() Sockets are managed at the process group level and referenced counted at the process level b/c that's really the only place to hook in cKsR|jdd|_d|_t|_||_td|jd|j |_ dS(NtloggerRR( RRRtsockettFalsetpreparedt socket_configRt_closet_prepare_sockettref_ctr(RRR((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyR5s    cCs d|jt||jjfS(Ns<%s at %s for %s>(t __class__tidRturl(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyt__repr__>s  cCs|jS(N(R(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pytconfigCscCs|jS(N(R(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyt is_preparedFscCs0|jj|jt|jd|jjS(NR(R Rt_require_preparedRRR(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyt get_socketIs  cCs|j|jjS(N(R'R R(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pytget_socket_ref_countNs cCs|jstdndS(NsSocket has not been prepared(RR(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyR'Rs cCs|js|jr,|jjd|jn|jj|_|jjri|jj|jjn|jjtjt |_ndS(NsCreating socket %s( RRtinfoRtcreate_and_bindRt get_backlogtlistent SOMAXCONNtTrue(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyRVs  cCsG|j|jr-|jjd|jn|jjt|_dS(NsClosing socket %s(R'RR*RRtcloseRR(R((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyRas    ( R RRRR$R%R&R(R)R'RR(((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyR.s       ((((RRRR(((s=/usr/lib/python2.7/site-packages/supervisor/socket_manager.pyts