
    Zd$                     X    d Z ddlmZ ddlmZ ddlmZ ddlmZ d Z	ddZ
dd	Zg d
ZdS )zzmq device functions   )ffi)lib)Socket)_retry_sys_callc                 "    t          ||          S N)proxy)device_typefrontendbackends      8lib/python3.11/site-packages/zmq/backend/cffi/devices.pydevicer      s    7###    Nc                     t          |t                    r|j        }nt          j        }t          t          j        | j        |j        |           d S r   )
isinstancer   _zmq_socketr   NULLr   C	zmq_proxy)r   r   captures      r   r	   r	      sG    '6"" %(AK!5w7JGTTTTTr   c                     t          |t                    r|j        }nt          j        }t          |t                    r|j        }nt          j        }t          t          j        | j        |j        ||           dS )a  proxy_steerable(frontend, backend, capture, control)

    Start a zeromq proxy with control flow.

    .. versionadded:: libzmq-4.1
    .. versionadded:: 18.0

    Parameters
    ----------
    frontend : Socket
        The Socket instance for the incoming traffic.
    backend : Socket
        The Socket instance for the outbound traffic.
    capture : Socket (optional)
        The Socket instance for capturing traffic.
    control : Socket (optional)
        The Socket instance for control flow.
    N)r   r   r   r   r   r   r   zmq_proxy_steerable)r   r   r   controls       r   proxy_steerabler      s~    & '6"" %('6"" %(	    r   )r   r	   r   r   )NN)__doc___cffir   r   r   socketr   utilsr   r   r	   r   __all__ r   r   <module>r!      s     
                   " " " " " "$ $ $U U U U# # # #L 1
0
0r   