File: //usr/lib/python3/dist-packages/twisted/python/__pycache__/systemd.cpython-310.pyc
o
�b� � @ s@ d Z dgZddlmZ ddlmZmZmZmZ G dd� d�Z dS )z�
Integration with systemd.
Currently only the minimum APIs necessary for using systemd's socket activation
feature are supported.
� ListenFDs� )�getpid)�Iterable�List�Mapping�Optionalc @ sl e Zd ZdZdZdee ddfdd�Ze dde e
eef d e e dd fd
d��Zde
e fdd
�ZdS )r aM
L{ListenFDs} provides access to file descriptors inherited from systemd.
Typically L{ListenFDs.fromEnvironment} should be used to construct a new
instance of L{ListenFDs}.
@cvar _START: File descriptors inherited from systemd are always
consecutively numbered, with a fixed lowest "starting" descriptor. This
gives the default starting descriptor. Since this must agree with the
value systemd is using, it typically should not be overridden.
@ivar _descriptors: A C{list} of C{int} giving the descriptors which were
inherited.
� �descriptors�returnNc C s
|| _ dS )z
@param descriptors: The descriptors which will be returned from calls to
C{inheritedDescriptors}.
N)�_descriptors)�selfr � r
�8/usr/lib/python3/dist-packages/twisted/python/systemd.py�__init__% s
zListenFDs.__init__�environ�startc C s� |du rddl m} |}|du r| j}g }zt|d �}W n ttfy+ Y | |�S w |t� krWzt|d �}W n ttfyG Y | |�S w tt||| ��}|d= |d= | |�S )a�
@param environ: A dictionary-like object to inspect to discover
inherited descriptors. By default, L{None}, indicating that the
real process environment should be inspected. The default is
suitable for typical usage.
@param start: An integer giving the lowest value of an inherited
descriptor systemd will give us. By default, L{None}, indicating
the known correct (that is, in agreement with systemd) value will be
used. The default is suitable for typical usage.
@return: A new instance of C{cls} which can be used to look up the
descriptors which have been inherited.
Nr )r �
LISTEN_PID�
LISTEN_FDS) �osr �_START�int�KeyError�
ValueErrorr �list�range)�clsr r �_environr �pid�countr
r
r �fromEnvironment, s, �
�zListenFDs.fromEnvironmentc C s
t | j�S )z6
@return: The configured descriptors.
)r r )r r
r
r �inheritedDescriptorsY s
zListenFDs.inheritedDescriptors)NN)�__name__�
__module__�__qualname__�__doc__r r r r �classmethodr r �strr r r r
r
r
r r s ����,N)
r$ �__all__r r �typingr r r r r r
r
r
r �<module> s