U
    luf$  ã                   @   s^   d Z ddlmZ ddlmZ ddlmZ ddlmZ dd„ Z	dd	d
„Z
ddd„Zdd
dgZdS )zzmq device functionsé   )Úffi)Úlib)ÚSocket)Ú_retry_sys_callc                 C   s
   t ||ƒS ©N)Úproxy)Zdevice_typeÚfrontendÚbackend© r
   ú</tmp/pip-unpacked-wheel-h6ekxre8/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   Úcontrolr
   r
   r   Úproxy_steerable   s    

ûr   )N)NN)Ú__doc__Z_cffir   r   r   Úsocketr   Úutilsr   r   r   r   Ú__all__r
   r
   r
   r   Ú<module>   s   
	
&