
    Mh                        d Z ddlmZ ddlZddlmZmZmZ ddlZddl	Zddl
mZ  G d de          ZddZddZe	 ddd            Ze	 dd d            Z	 dd!dZddgZdS )"zJModule holding utility and convenience functions for zmq event monitoring.    )annotationsN)	Awaitable	TypedDictoverload)_check_versionc                  .    e Zd ZU ded<   ded<   ded<   dS )_MonitorMessageinteventvaluebytesendpointN)__name__
__module____qualname____annotations__     Q/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/zmq/utils/monitor.pyr	   r	      s+         JJJJJJOOOOOr   r	   msglist[bytes]returnc                   t          |           dk    st          | d                   dk    rt          d|            t          j        d| d                   \  }}t	          j        |          t	          j        |          | d         d}|S )a  decode zmq_monitor event messages.

    Parameters
    ----------
    msg : list(bytes)
        zmq multipart message that has arrived on a monitor PAIR socket.

        First frame is::

            16 bit event id
            32 bit event value
            no padding

        Second frame is the endpoint as a bytestring

    Returns
    -------
    event : dict
        event description as dict with the keys `event`, `value`, and `endpoint`.
       r      zInvalid event message format: z=hi   )r   r   r   )lenRuntimeErrorstructunpackzmqEvent)r   event_idr   r   s       r   parse_monitor_messager$      s    * 3xx1}}CFq((ACAABBBmE3q622OHe8$$5!!F E
 Lr   awaitable_msgAwaitable[list[bytes]]c                4   K   |  d{V }t          |          S )zyLike parse_monitor_msg, but awaitable

    Given awaitable message, return awaitable for the parsed monitor message.
    N)r$   )r%   r   s     r   _parse_monitor_msg_asyncr(   6   s-       





C %%%r   socketzmq.asyncio.Socketflagsr
   Awaitable[_MonitorMessage]c                    d S Nr   r)   r+   s     r   recv_monitor_messager0   C   s	     "%r   zmq.Socket[bytes]c                    d S r.   r   r/   s     r   r0   r0   J   s	     cr   
zmq.Socket,_MonitorMessage | Awaitable[_MonitorMessage]c                    t          dd           |                     |          }t          |t                    rt	          |          S t          |          S )u  Receive and decode the given raw message from the monitoring socket and return a dict.

    Requires libzmq ≥ 4.0

    The returned dict will have the following entries:
      event : int
        the event id as described in `libzmq.zmq_socket_monitor`
      value : int
        the event value associated with the event, see `libzmq.zmq_socket_monitor`
      endpoint : str
        the affected endpoint

    .. versionchanged:: 23.1
        Support for async sockets added.
        When called with a async socket,
        returns an awaitable for the monitor message.

    Parameters
    ----------
    socket : zmq.Socket
        The PAIR socket (created by other.get_monitor_socket()) on which to recv the message
    flags : int
        standard zmq recv flags

    Returns
    -------
    event : dict
        event description as dict with the keys `event`, `value`, and `endpoint`.
    )   r   zlibzmq event API)r   recv_multipart
isinstancer   r(   r$   )r)   r+   r   s      r   r0   r0   Q   s[    D 6-...



&
&C #y!! -',,, !%%%r   r$   r0   )r   r   r   r	   )r%   r&   r   r	   )r   )r)   r*   r+   r
   r   r,   )r)   r1   r+   r
   r   r	   )r)   r3   r+   r
   r   r4   )__doc__
__future__r   r   typingr   r   r   r!   zmq.asyncio	zmq.errorr   r	   r$   r(   r0   __all__r   r   r   <module>r?      sD   P P
 # " " " " "  1 1 1 1 1 1 1 1 1 1 



     $ $ $ $ $ $    i      @
& 
& 
& 
& 
 % % % % 
% 
     
 ,& ,& ,& ,& ,&^ #$:
;r   