
    Sf                         d dl Z d dlZd dlZd dlZd dlZd dlZddlmZ ddlm	Z	 ddlm
Z
 ddlmZ g dZ G d d	          Z e            Zej        Zej        Zej        Zej        Zd
 ZdS )    N   )	_billiard)spawn)util)spawnv_passfds)ensure_runningregister
unregisterc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )SemaphoreTrackerc                 D    t          j                    | _        d | _        d S N)	threadingLock_lock_fdselfs    L/var/www/html/env/lib/python3.11/site-packages/billiard/semaphore_tracker.py__init__zSemaphoreTracker.__init__    s    ^%%
    c                 8    |                                   | j        S r   )r   r   r   s    r   getfdzSemaphoreTracker.getfd$   s    xr   c                    | j         5  | j        	 ddd           dS g }	 |                    t          j                                                   n# t          $ r Y nw xY wd}t          j                    \  }}	 |                    |           t          j
                    }|gt          j                    z   }|d||z  gz  }t          |||           || _        n#  t          j        |            xY w	 t          j        |           n# t          j        |           w xY w	 ddd           dS # 1 swxY w Y   dS )zMake sure that semaphore tracker process is running.

        This can be run from any process.  Usually a child process will use
        the semaphore created by its parent.Nz4from billiard.semaphore_tracker import main;main(%d)z-c)r   r   appendsysstderrfileno	Exceptionospiper   get_executabler   _args_from_interpreter_flagsr   close)r   fds_to_passcmdrwexeargss          r   r   zSemaphoreTracker.ensure_running(   s   
 Z 	 	x#	 	 	 	 	 	 	 	 K""3:#4#4#6#67777   HC799DAq""1%%%*,,ut@BBBsQw'sD+666
 	/	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sd   	D5D51AD5
A D5A  D5<ACDC55D9D5D$$D55D9<D9c                 2    |                      d|           dS )z2Register name of semaphore with semaphore tracker.REGISTERN_sendr   names     r   r	   zSemaphoreTracker.registerF   s    

:t$$$$$r   c                 2    |                      d|           dS )z4Unregister name of semaphore with semaphore tracker.
UNREGISTERNr-   r/   s     r   r
   zSemaphoreTracker.unregisterJ   s    

<&&&&&r   c                 "   |                                   d                    ||                              d          }t          |          dk    rt	          d          t          j        | j        |          }|t          |          k    sJ d S )Nz{0}:{1}
asciii   zname too long)r   formatencodelen
ValueErrorr    writer   )r   r&   r0   msgnbytess        r   r.   zSemaphoreTracker._sendN   s      d++227;;t99s?? _---$(C((S!!!!!!r   N)	__name__
__module____qualname__r   r   r   r	   r
   r.    r   r   r   r      sn              <% % %' ' '" " " " "r   r   c           
         t          j         t           j        t           j                   t          j         t           j        t           j                   t          j        t          j        fD ]'}	 |                                 # t          $ r Y $w xY wt                      }	 t          j        | d          5 }|D ]}	 |                                                    d          \  }}|dk    r|                    |           n.|dk    r|                    |           nt!          d|z            x# t          $ r+ 	 t	          j        t	          j                      n#  Y nxY wY w xY w	 ddd           n# 1 swxY w Y   |r6	 t'          j        dt+          |          z             n# t          $ r Y nw xY w|D ]d}	 |                    d          }	 t/          j        |           n1# t          $ r$}t'          j        d	|d
|           Y d}~nd}~ww xY w`# w xY wdS # |r6	 t'          j        dt+          |          z             n# t          $ r Y nw xY w|D ]d}	 |                    d          }	 t/          j        |           n1# t          $ r$}t'          j        d	|d
|           Y d}~nd}~ww xY w`# w xY ww xY w)zRun semaphore tracker.rb   :s   REGISTERs
   UNREGISTERzunrecognized command %rNzRsemaphore_tracker: There appear to be %d leaked semaphores to clean up at shutdownr4   zsemaphore_tracker: z: )signalSIGINTSIG_IGNSIGTERMr   stdinstdoutr$   r   setioopenstripsplitaddremoveRuntimeError
excepthookexc_infowarningswarnr7   decoder   
sem_unlink)fdfcacheliner&   r0   es          r   mainr\   `   s    M&-000
M&.&.111i$  	GGIIII 	 	 	D	 EEE%WR 	!   $

 2 24 8 8ICk))		$--T*****+Ds+JKKK    777		 	 	 	 	 	 	 	 	 	 	 	 	 	 	"  	 J!%jj) * * * *     	 	D{{7++K(....  K K KMMqq"IJJJJJJJJK 	 	  	 J!%jj) * * * *     	 	D{{7++K(....  K K KMMqq"IJJJJJJJJK 	s-  .B
BB"H# 7E7=A4D21E72
E'=EE'E!	E'$E7&E''E7+H# 7E;;H# >E;?H# $F* *
F76F7?HG*)H*
H4HHHHH#K'$IK
IKIK!J>7JJ>
J:	J5	0J>5J:	:J>=K>K 	 K)rJ   r    rC   r   r   rS   _extr    r   r   compatr   __all__r   _semaphore_trackerr   r	   r
   r   r\   r?   r   r   <module>rb      s   
			 				  



                        " " " " " "
6
6
68" 8" 8" 8" 8" 8" 8" 8"v &%'' #2&*
 2 2 2 2 2r   