
     h                         d dl mZ 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
e          Z e            Zej        Zej        Zej        Zej        Zd ZdS )    )absolute_importN   )	_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    V/var/www/html/Sam_Eipo/venv/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.registerG   s    

:t$$$$$r   c                 2    |                      d|           dS )z4Unregister name of semaphore with semaphore tracker.
UNREGISTERNr.   r0   s     r   r   zSemaphoreTracker.unregisterK   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'   r1   msgnbytess        r   r/   zSemaphoreTracker._sendO   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 shutdownr5   zsemaphore_tracker: z: )signalSIGINTSIG_IGNSIGTERMr   stdinstdoutr%   r    setioopenstripsplitaddremoveRuntimeError
excepthookexc_infowarningswarnr8   decoder   
sem_unlink)fdfcacheliner'   r1   es          r   mainr]   a   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)
__future__r   rK   r!   rD   r   r   rT   _extr    r   r   compatr   __all__objectr   _semaphore_trackerr	   r
   r   r   r]   r@   r   r   <module>re      s   ' & & & & & 				 				  



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