
    Vh                     j    d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
  e       ZdZ G d d	      Zy
)zd
Cross-platform process-related functionality used by different
L{IReactorProcess} implementations.
    )Optional)Logger)getWarningMethod)Failure)qualzUSince Twisted 8.2, IProcessProtocol.processExited is required.  %s must implement it.c                   V    e Zd ZU dZee   ed<   dZee   ed<   dZdZ	d Z
d Zd Zd Zy)	BaseProcessNpidstatusr   c                     || _         y )N)proto)selfprotocols     M/home/dcms/DCMS/lib/python3.12/site-packages/twisted/internet/_baseprocess.py__init__zBaseProcess.__init__   s	    
    c                 >   t               }t        | j                  d|      }||u r= t               t        t        | j                  j                        fz  t        d       y t        j                  d      5   |t        |             d d d        y # 1 sw Y   y xY w)NprocessExitedr   )
stacklevelzwhile calling processExited:)objectgetattrr   r   _missingProcessExitedr   	__class__DeprecationWarning_logfailuresHandledr   )r   reasondefaultr   s       r   _callProcessExitedzBaseProcess._callProcessExited"   s    (

OWEG#%djj.B.B)C(EE" %%&DE /gfo./ / /s   8BBc                     || _         | xj                  dz  c_        d| _        | j                  | j	                  |             | j                          y)z;
        This is called when the child terminates.
           N)r   lostProcessr
   r   
_getReasonmaybeCallProcessEnded)r   r   s     r   processEndedzBaseProcess.processEnded/   sF     A 78""$r   c                    | j                   g| j                  | j                        }| j                   }d| _         t        j	                  d      5  |j                  t        |             ddd       yy# 1 sw Y   yxY w)zD
        Call processEnded on protocol after final cleanup.
        Nzwhile calling processEnded:)r   r#   r   r   r   r%   r   )r   r   r   s      r   r$   z!BaseProcess.maybeCallProcessEnded9   sp     ::!__T[[1FJJEDJ%%&CD 4""76?34 4	 "4 4s   A55A>)__name__
__module____qualname__r
   r   int__annotations__r   r"   r   r   r   r%   r$    r   r   r	   r	      s<    C# FHSM KE/%	4r   r	   N)__doc__typingr   twisted.loggerr   twisted.python.deprecater   twisted.python.failurer   twisted.python.reflectr   r   r   r	   r,   r   r   <module>r3      s6   

  ! 5 * 'x* )4 )4r   