File: //lib/python3/dist-packages/twisted/application/runner/__pycache__/_runner.cpython-38.pyc
U
W[� � @ s� d Z ddlmZ ddlmZ ddlmZ ddlmZm Z m
Z
ddlmZm
Z
mZmZmZmZ ddlmZmZ dd lmZmZmZ e d
d�G dd
� d
e��ZdS )z
Twisted application runner.
� )�stderr)�SIGTERM)�kill)�attrib�attrs�Factory)�globalLogBeginner�textFileLogObserver�FilteringLogObserver�LogLevelFilterPredicate�LogLevel�Logger� )�exit�
ExitStatus)�nonePIDFile�AlreadyRunningError�InvalidPIDFileErrorT)�frozenc @ s� e Zd ZdZe� Ze� Zeed�Z edd�Z
eejd�Z
eed�Zeed�Zedd� d�Zeee�d�Zedd� d�Zeee�d�Zdd� Zd d
� Zdd� Zd
d� Zdd� Zdd� ZdS )�Runnera�
Twisted application runner.
@cvar _log: The logger attached to this class.
@type _log: L{Logger}
@ivar _reactor: The reactor to start and run the application in.
@type _reactor: L{IReactorCore}
@ivar _pidFile: The file to store the running process ID in.
@type _pidFile: L{IPIDFile}
@ivar _kill: Whether this runner should kill an existing running
instance of the application.
@type _kill: L{bool}
@ivar _defaultLogLevel: The default log level to start the logging
system with.
@type _defaultLogLevel: L{constantly.NamedConstant} from L{LogLevel}
@ivar _logFile: A file stream to write logging output to.
@type _logFile: writable file-like object
@ivar _fileLogObserverFactory: A factory for the file log observer to
use when starting the logging system.
@type _pidFile: callable that takes a single writable file-like object
argument and returns a L{twisted.logger.FileLogObserver}
@ivar _whenRunning: Hook to call after the reactor is running;
this is where the application code that relies on the reactor gets
called.
@type _whenRunning: callable that takes the keyword arguments specified
by C{whenRunningArguments}
@ivar _whenRunningArguments: Keyword arguments to pass to
C{whenRunning} when it is called.
@type _whenRunningArguments: L{dict}
@ivar _reactorExited: Hook to call after the reactor exits.
@type _reactorExited: callable that takes the keyword arguments
specified by C{reactorExitedArguments}
@ivar _reactorExitedArguments: Keyword arguments to pass to
C{reactorExited} when it is called.
@type _reactorExitedArguments: L{dict}
)�defaultFc K s d S �N� ��_r r �D/usr/lib/python3/dist-packages/twisted/application/runner/_runner.py�<lambda>S � zRunner.<lambda>c K s d S r r r r r r r U r c C sb | j }| �� z,|� | �� | �� | �� W 5 Q R X W n" tk
r\ ttjd� Y dS X dS )z#
Run this command.
zAlready running.N) �_pidFile�killIfRequested�startLogging�startReactor�
reactorExitedr r r � EX_CONFIG)�self�pidFiler r r �runY s z
Runner.runc C s� | j }| jr�|tkr$ttjd� dS z|�� }W nB tk
rR ttjd� Y dS t k
rr ttj
d� Y dS X | �� | jj
d|d� t|t� ttj� dS dS )zj
If C{self._kill} is true, attempt to kill a running instance of the
application.
zNo PID file specified.NzUnable to read PID file.zInvalid PID file.zTerminating process: {pid})�pid)r �_killr r r �EX_USAGE�read�EnvironmentError�EX_IOERRr �
EX_DATAERRr �_log�infor r �EX_OK)r$ r% r'