a
    Þˆ¨a"  ã                   @   sT   d Z ddlmZmZ ddlmZ ddlmZ dd„ Z	ddd	„Z
dd
d„Zg d¢ZdS )zzmq device functionsé   )ÚlibÚffi)ÚSocket)Ú_retry_sys_callc                 C   s
   t ||ƒS ©N)Úproxy)Zdevice_typeÚfrontendÚbackend© r
   ú7lib/python3.9/site-packages/zmq/backend/cffi/devices.pyÚdevice   s    r   Nc                 C   s0   t |tƒr|j}ntj}ttj| j|j|ƒ d S r   )Ú
isinstancer   Ú_zmq_socketr   ÚNULLr   ÚCZ	zmq_proxy)r   r	   Úcapturer
   r
   r   r      s    
r   c                 C   sJ   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   Zzmq_proxy_steerable)r   r	   r   Zcontrolr
   r
   r   Úproxy_steerable   s    

ûr   )r   r   r   )N)NN)Ú__doc__Z_cffir   r   r   Zsocketr   Zutilsr   r   r   r   Ú__all__r
   r
   r
   r   Ú<module>   s   
	
&