
    Ϫf                     \    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
 dZ G d d	      Zy
)zd
Cross-platform process-related functionality used by different
L{IReactorProcess} implementations.
    )Optional)getWarningMethod)Failure)err)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     ?/usr/lib/python3/dist-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        |             y # t        $ r t        d d       Y y w xY w)NprocessExitedr   )
stacklevelz!unexpected error in processExited)objectgetattrr   r   _missingProcessExitedr   	__class__DeprecationWarningr   BaseExceptionr   )r   reasondefaultr   s       r   _callProcessExitedzBaseProcess._callProcessExited    s|    (

OWEG#%djj.B.B)C(EE"?gfo.  ?D=>?s   $A6 6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                   J| j                  | j                        }| j                   }d| _         	 |j                  t	        |             yy# t
        $ r t        dd       Y yw xY w)zD
        Call processEnded on protocol after final cleanup.
        Nz unexpected error in processEnded)r   r"   r   r$   r   r   r   )r   r   r   s      r   r#   z!BaseProcess.maybeCallProcessEnded9   sh     ::!__T[[1FJJEDJ>""76?3 " ! >D<=>s   A A0/A0)__name__
__module____qualname__r
   r   int__annotations__r   r!   r   r   r   r$   r#    r   r   r	   r	      s<    C# FHSM KE?%>r   r	   N)__doc__typingr   twisted.python.deprecater   twisted.python.failurer   twisted.python.logr   twisted.python.reflectr   r   r	   r+   r   r   <module>r2      s/   

  5 * " '* -> ->r   