
    g                     $   d dl Z d dlZ e j                  d      Z G d de      Z	 d dlZej                  ej                  z  Z	d Z
d Z G d d      Z G d d      Z G d de      Zy# e$ r  	 d dlZd Z
d Zn# e$ r	 d	 Z
d
 ZY nw xY wY Dw xY w)    Nzzc.lockfilec                       e Zd ZdZy)	LockErrorzCouldn't get a lock
    N)__name__
__module____qualname____doc__     )/opt/Tautulli/lib/zc/lockfile/__init__.pyr   r      s    r
   r   c                     	 t        j                  | j                         t               y # t        $ r t        d| j                  z        w xY w)NCouldn't lock %r)fcntlflockfileno_flagsOSErrorr   namefiles    r   
_lock_filer   :   s?    	<KKv. 	<.:;;	<s	   (+ "Ac                 h    t        j                  | j                         t         j                         y N)r   r   r   LOCK_UNr   s    r   _unlock_filer   @   s    DKKM5==1r
   c                     	 t        j                  | j                         t         j                  d       y # t        $ r t        d| j                  z        w xY w)N   r   )msvcrtlockingr   LK_NBLCKr   r   r   r   s    r   r   r   (   sH    @t{{}fooqA @ 2TYY >??@s	   36 "Ac                     	 | j                  d       t        j                  | j                         t        j                  d       y # t
        $ r t        d| j                  z        w xY w)Nr   r   zCouldn't unlock %r)seekr   r   r   LK_UNLCKr   r   r   r   s    r   r   r   /   sS    B		!t{{}fooqA B 4tyy @AABs   AA "A)c                     t        d      Nz(No file-locking support on this platform	TypeErrorr   s    r   r   r           FGGr
   c                     t        d      r$   r%   r   s    r   r   r   #   r'   r
   c                       e Zd ZdZd Zy)LazyHostNamez>Avoid importing socket and calling gethostname() unnecessarilyc                 *    dd l }|j                         S )Nr   )socketgethostname)selfr,   s     r   __str__zLazyHostName.__str__G   s    !!##r
   N)r   r   r   r   r/   r	   r
   r   r*   r*   D   s
    H$r
   r*   c                   "    e Zd ZdZd Zd Zd Zy)SimpleLockFileNc                    || _         	 t        |d      }	 t        |       || _        | j                          |j                          y # t        $ r t        |d      }Y Kw xY w# t
        $ r |j                           w xY w)Nzr+za+)	_pathopenr   r   _fpBaseExceptionclose_on_lockflush)r.   pathfps      r   __init__zSimpleLockFile.__init__P   s|    
	"dD!B	rNDH 	

!  	"
 dD!B	"  	HHJ	s   A	 A$ 	A! A!$A?c                     | j                   7t        | j                          | j                   j                          d | _         y y r   )r5   r   r7   r.   s    r   r7   zSimpleLockFile.closeg   s2    88"HHNNDH  r
   c                      y)zb
        Allow subclasses to supply behavior to occur following
        lock acquisition.
        Nr	   r>   s    r   r8   zSimpleLockFile._on_lockm   s    r
   )r   r   r   r5   r<   r7   r8   r	   r
   r   r1   r1   L   s    
C.r
   r1   c                   &     e Zd Zd fd	Zd Z xZS )LockFilec                 2    || _         t        | 	  |       y r   )_content_templatesuperr<   )r.   r:   content_template	__class__s      r   r<   zLockFile.__init__v   s    !1r
   c                     | j                   j                  t        j                         t	                     }| j
                  j                  d|z         | j
                  j                          y )N)pidhostnamez %s
)rC   formatosgetpidr*   r5   writetruncate)r.   contents     r   r8   zLockFile._on_lockz   sR    ((//		!^ 0 
 	w()r
   )z{pid})r   r   r   r<   r8   __classcell__)rF   s   @r   rA   rA   t   s    r
   rA   )loggingrK   	getLoggerlogger	Exceptionr   r   LOCK_EXLOCK_NBr   r   r   ImportErrorr   r*   r1   rA   r	   r
   r   <module>rX      s     	 
		=	)	 
'2: ]]U]]*F<2$ $% %P~ q  BB	@	B!  H	H	H	HBs5   A* *B0A;4B;B	BB		BB