
    Mh                         d Z ddlZddlmZmZmZ  G d d          Z G d dee          Z G d d	ee          Z G d
 dee          Z	g dZ
dS )zProxy classes and functions.    N)DeviceProcessDeviceThreadDevicec                   J    e Zd ZdZej        fdZd Zd Zd Z	d Z
d Zd Zd	S )
	ProxyBasez"Base class for overriding methods.c                 l    t          j        | ||           || _        g | _        g | _        g | _        d S )N)in_typeout_type)r   __init__mon_type
_mon_binds_mon_connects_mon_sockopts)selfr	   r
   r   s       W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/zmq/devices/proxydevice.pyr   zProxyBase.__init__   s=    gAAAA     c                 :    | j                             |           dS )zaEnqueue ZMQ address for binding on mon_socket.

        See zmq.Socket.bind for details.
        N)r   appendr   addrs     r   bind_monzProxyBase.bind_mon   s     
 	t$$$$$r   c                 \     | j         |g|R i |}|                     | d|            |S )zEnqueue a random port on the given interface for binding on
        mon_socket.

        See zmq.Socket.bind_to_random_port for details.

        .. versionadded:: 18.0
        :)_reserve_random_portr   )r   r   argskwargsports        r   bind_mon_to_random_portz!ProxyBase.bind_mon_to_random_port   sK     )t(??????&&&&'''r   c                 :    | j                             |           dS )zgEnqueue ZMQ address for connecting on mon_socket.

        See zmq.Socket.connect for details.
        N)r   r   r   s     r   connect_monzProxyBase.connect_mon)   s!    
 	!!$'''''r   c                 >    | j                             ||f           dS )zfEnqueue setsockopt(opt, value) for mon_socket

        See zmq.Socket.setsockopt for details.
        N)r   r   )r   optvalues      r   setsockopt_monzProxyBase.setsockopt_mon0   s%    
 	!!3,/////r   c                 r   t          j        |           \  }}| j        }|                    | j                  }| j                            |           | j        D ]\  }}|                    ||           | j	        D ]}|
                    |           | j        D ]}|                    |           |||fS N)r   _setup_sockets_contextsocketr   _socketsr   r   
setsockoptr   bindr   connect)r   insoutsctxmonsr"   r#   ifaces           r   r'   zProxyBase._setup_sockets7   s    )$//	Tmzz$-((T""" , 	( 	(JCOOC''''_ 	 	EIIe' 	  	 ELLD$r   c                 b    |                                  \  }}}t          j        |||           d S r&   )r'   zmqproxy)r   r.   r/   r1   s       r   
run_devicezProxyBase.run_deviceI   s3    --//T4	#tT"""""r   N)__name__
__module____qualname____doc__r4   PUBr   r   r   r    r$   r'   r6    r   r   r   r   
   s        ,,367        % % %  ( ( (0 0 0  $# # # # #r   r   c                       e Zd ZdZdS )Proxya  Threadsafe Proxy object.

    See zmq.devices.Device for most of the spec. This subclass adds a
    <method>_mon version of each <method>_{in|out} method, for configuring the
    monitor socket.

    A Proxy is a 3-socket ZMQ Device that functions just like a
    QUEUE, except each message is also sent out on the monitor socket.

    A PUB socket is the most logical choice for the mon_socket, but it is not required.
    Nr7   r8   r9   r:   r<   r   r   r>   r>   N   s        
 
 
 
r   r>   c                       e Zd ZdZdS )ThreadProxyz&Proxy in a Thread. See Proxy for more.Nr?   r<   r   r   rA   rA   \   s        0000r   rA   c                       e Zd ZdZdS )ProcessProxyz'Proxy in a Process. See Proxy for more.Nr?   r<   r   r   rC   rC   `   s        1111r   rC   )r>   rA   rC   )r:   r4   zmq.devices.basedevicer   r   r   r   r>   rA   rC   __all__r<   r   r   <module>rF      s    " "
 


 F F F F F F F F F FA# A# A# A# A# A# A# A#H    Iv   1 1 1 1 1)\ 1 1 12 2 2 2 29m 2 2 2  r   