ó
L]c           @   ss   d  Z  d d l m Z m Z d d l m Z d d l m Z d   Z d d  Z
 d d d  Z d d	 d
 g Z d S(   s   zmq device functionsi   (   t   Ct   ffi(   t   Socket(   t   _retry_sys_callc         C   s   t  | |  S(   N(   t   proxy(   t   device_typet   frontendt   backend(    (    s7   lib/python2.7/site-packages/zmq/backend/cffi/devices.pyt   device   s    c         C   sD   t  | t  r | j } n	 t j } t t j |  j | j |  d  S(   N(   t
   isinstanceR   t   _zmq_socketR   t   NULLR   R    t	   zmq_proxy(   R   R   t   capture(    (    s7   lib/python2.7/site-packages/zmq/backend/cffi/devices.pyR      s    	c         C   sk   t  | t  r | j } n	 t j } t  | t  r? | j } n	 t j } t t j |  j | j | |  d S(   sú  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    t   zmq_proxy_steerable(   R   R   R   t   control(    (    s7   lib/python2.7/site-packages/zmq/backend/cffi/devices.pyt   proxy_steerable   s    		R   R   R   N(   t   __doc__t   _cffiR    R   t   socketR   t   utilsR   R   t   NoneR   R   t   __all__(    (    (    s7   lib/python2.7/site-packages/zmq/backend/cffi/devices.pyt   <module>   s   	&