a
    �ÏOc?	  ã                   @   s,   d dl Z d dlZd dlZG dd„ deƒZdS )é    Nc                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚPidfilezž    Manage a PID file. If a specific name is provided
    it and '"%s.oldpid" % name' will be used. Otherwise
    we create a temp file using os.mkstemp.
    c                 C   s   || _ d | _d S ©N)ÚfnameÚpid)Úselfr   © r   úG/var/www/html/gsl.tools/lib/python3.9/site-packages/gunicorn/pidfile.pyÚ__init__   s    zPidfile.__init__c                 C   sÂ   |   ¡ }|r2|t ¡ krd S d}t||| jf ƒ‚|| _tj | j¡}|rbtj |¡sbtd| ƒ‚t	j
|d�\}}t |d| j  d¡¡ | jr t || j¡ n|| _t |¡ t | jd¡ d S )Nz5Already running on PID %s (or pid file '%s' is stale)z'%s doesn't exist. Can't create pidfile.)Údirz%s
zutf-8i¤  )ÚvalidateÚosÚgetpidÚRuntimeErrorr   r   ÚpathÚdirnameÚisdirÚtempfileÚmkstempÚwriteÚencodeÚrenameÚcloseÚchmod)r   r   ZoldpidÚmsgZfdirÚfdr   r   r   r   Úcreate   s"    
zPidfile.createc                 C   s   |   ¡  || _|  | j¡ d S r   )Úunlinkr   r   r   )r   r   r   r   r   r   /   s    zPidfile.renamec                 C   sn   zVt | jdƒ� }t| ¡ pdƒ}W d  ƒ n1 s40    Y  || jkrTt | j¡ W n tyh   Y n0 dS )z delete pidfileÚrr   N)Úopenr   ÚintÚreadr   r   r   Ú	Exception)r   ÚfZpid1r   r   r   r   4   s    .
zPidfile.unlinkc                 C   sf  | j s
dS �zt| j dƒ�ê}zt| ¡ ƒ}W n" tyN   Y W d  ƒ W dS 0 z"t |d¡ |W W  d  ƒ W S  tyô } zj|jd t	j
kr²|W  Y d}~W  d  ƒ W S |jd t	jkrÞW Y d}~W d  ƒ W dS ‚ W Y d}~n
d}~0 0 W d  ƒ n1 �s0    Y  W nH t�y` } z.|jd t	jk�rJW Y d}~dS ‚ W Y d}~n
d}~0 0 dS )z- Validate pidfile and make it stale if neededNr   r   )r   r   r   r    Ú
ValueErrorr   ÚkillÚOSErrorÚargsÚerrnoÚEPERMZESRCHÚIOErrorÚENOENT)r   r"   ÚwpidÚer   r   r   r   ?   s*     <zPidfile.validateN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   r   r   r   r   r   r   r   r   r      s   r   )r'   r   r   Úobjectr   r   r   r   r   Ú<module>   s   