U
    ‡×Xá  ã                   @   s    d dl mZ ddlmZmZmZmZmZm	Z	m
Z
mZmZmZmZ dd„ Zddd„Zed d	fd
d„Zed d	d fdd„Zddd„Zddd„Zddd„Zddd„ZdS )é    )Ú	AF_UNSPECé   )Ú__version__ÚbootedÚnotifyÚ_listen_fdsÚ_is_fifoÚ
_is_socketÚ_is_socket_inetÚ_is_socket_sockaddrÚ_is_socket_unixÚ_is_mqÚLISTEN_FDS_STARTc                 C   s(   z
|   ¡ W S  tk
r"   |  Y S X d S ©N)ÚfilenoÚAttributeError)Úfileobj© r   ú0/usr/lib/python3/dist-packages/systemd/daemon.pyÚ_convert_fileobj   s    
r   Nc                 C   s   t | ƒ}t||ƒS r   )r   r   ©r   ÚpathÚfdr   r   r   Úis_fifo   s    r   éÿÿÿÿc                 C   s   t | ƒ}t||||ƒS r   )r   r	   )r   ÚfamilyÚtypeÚ	listeningr   r   r   r   Ú	is_socket   s    r   c                 C   s   t | ƒ}t|||||ƒS r   )r   r
   )r   r   r   r   Zportr   r   r   r   Úis_socket_inet   s    r   c                 C   s   t | ƒ}t|||||ƒS )aa  Check socket type, address and/or port, flowinfo, listening state.

    Wraps sd_is_socket_inet_sockaddr(3).

    `address` is a systemd-style numerical IPv4 or IPv6 address as used in
    ListenStream=. A port may be included after a colon (":").
    See systemd.socket(5) for details.

    Constants for `family` are defined in the socket module.
    )r   r   )r   Zaddressr   Zflowinfor   r   r   r   r   Úis_socket_sockaddr!   s    r    c                 C   s   t | ƒ}t||||ƒS r   )r   r   )r   r   r   r   r   r   r   r   Úis_socket_unix/   s    r!   c                 C   s   t | ƒ}t||ƒS r   )r   r   r   r   r   r   Úis_mq3   s    r"   Tc                 C   s   t | ƒ}tttt| ƒƒS )aS  Return a list of socket activated descriptors

    Example::

      (in primary window)
      $ systemd-activate -l 2000 python3 -c \
          'from systemd.daemon import listen_fds; print(listen_fds())'
      (in another window)
      $ telnet localhost 2000
      (in primary window)
      ...
      Execing python3 (...)
      [3]
    )r   ÚlistÚranger   )Zunset_environmentZnumr   r   r   Ú
listen_fds7   s    r%   )N)r   r   r   )r   r   N)N)T)Zsocketr   Z
_AF_UNSPECZ_daemonr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r    r!   r"   r%   r   r   r   r   Ú<module>   s   4



