ó
    šŠh‡  ã                  ój   • S r SSKJr  SSKrSSKJr  SSKJr  SSKJ	r	   " S S5      r
\
" 5       rSS	/rg)
z(Tracker for zero-copy messages with 0MQ.é    )ÚannotationsN)ÚEvent)ÚFrame)ÚNotDonec                  óV   • \ rS rSr% SrS\S'   S\S'   SS jr\S 5       rSSS	 jjr	S
r
g)ÚMessageTrackeré   a}  A class for tracking if 0MQ is done using one or more messages.

When you send a 0MQ message, it is not sent immediately. The 0MQ IO thread
sends the message at some later time. Often you want to know when 0MQ has
actually sent the message though. This is complicated by the fact that
a single 0MQ message can be sent multiple times using different sockets.
This class allows you to track all of the 0MQ usages of a message.

Parameters
----------
towatch : Event, MessageTracker, zmq.Frame
    This objects to track. This class can track the low-level
    Events used by the Message class, other MessageTrackers or
    actual Messages.
z
set[Event]Úeventszset[MessageTracker]Úpeersc                óô  • [        5       U l        [        5       U l        U HÔ  n[        U[        5      (       a  U R                  R                  U5        M5  [        U[        5      (       a  U R                  R                  U5        Mg  [        U[        5      (       aC  UR                  (       d  [        S5      eU R                  R                  UR                  5        M¿  [        S[        U5       35      e   g)a$  Create a message tracker to track a set of messages.

Parameters
----------
*towatch : tuple of Event, MessageTracker, Message instances.
    This list of objects to track. This class can track the low-level
    Events used by the Message class, other MessageTrackers or
    actual Messages.
zNot a tracked messagez&Require Events or Message Frames, not N)Úsetr
   r   Ú
isinstancer   Úaddr   r   ÚtrackerÚ
ValueErrorÚ	TypeErrorÚtype)ÚselfÚtowatchÚobjs      ÚdC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\zmq/sugar/tracker.pyÚ__init__ÚMessageTracker.__init__#   s¥   € ô “eˆŒÜ“UˆŒ
ÛˆCÜ˜#œu×%Ñ%Ø—‘—‘ Ö$Ü˜C¤×0Ñ0Ø—
‘
—‘˜sÖ#Ü˜C¤×'Ñ'Ø—{—{Ü$Ð%<Ó=Ð=Ø—
‘
—‘˜sŸ{™{Ö+äÐ"HÌÈcËÈÐ TÓUÐUò ó    c                ó¤   • U R                    H  nUR                  5       (       a  M    g   U R                   H  nUR                  (       a  M    g   g)z9Is 0MQ completely done with the message(s) being tracked?FT)r
   Úis_setr   Údone)r   ÚevtÚpms      r   r   ÚMessageTracker.done;   sA   € ð —;”;ˆCØ—:‘:—<“<Ùñ ð —*”*ˆBØ—7—7‘7Ùñ ð r   c                ó´  • [         R                   " 5       nUSL d  US:  a  SnOUnU R                   HW  nUS:  a  [        eUR                  US9  UR	                  5       (       d  [        e[         R                   " 5       nX5U-
  -  nUnMY     U R
                   H<  nUS:  a  [        eUR                  US9  [         R                   " 5       nX5U-
  -  nUnM>     g)a<  Wait for 0MQ to be done with the message or until `timeout`.

Parameters
----------
timeout : float
    default: -1, which means wait forever.
    Maximum time in (s) to wait before raising NotDone.

Returns
-------
None
    if done before `timeout`

Raises
------
NotDone
    if `timeout` reached before I am done.
Fr   i€:	 )ÚtimeoutN)Útimer
   r   Úwaitr   r   )r   r"   ÚticÚ	remainingr   ÚtocÚpeers          r   r$   ÚMessageTracker.waitF   sÁ   € ô& iŠi‹kˆàeÒ˜w¨›{Ø%‰IàˆIØ—;”;ˆCØ˜1‹}ÜØH‰H˜YˆHÑ'Ø—:‘:—<‘<ÜÜ—)’)“+ˆCØ˜s™Ñ"ˆIØŠCñ ð —J”JˆDØ˜1‹}ÜØI‰I˜iˆIÑ(Ü—)’)“+ˆCØ˜s™Ñ"ˆIØŠCò r   )r
   r   N)r   z%tuple[MessageTracker | Event | Frame])éÿÿÿÿ)r"   zfloat | int)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   Úpropertyr   r$   Ú__static_attributes__© r   r   r   r      s9   ‡ ñð  ÓØÓôVð0 ñó ð÷)ñ )r   r   Ú_FINISHED_TRACKER)r/   Ú
__future__r   r#   Ú	threadingr   Úzmq.backendr   Ú	zmq.errorr   r   r4   Ú__all__r3   r   r   Ú<module>r:      s<   ðÙ .õ
 #ã Ý å Ý ÷`ñ `ñF #Ó$Ð àÐ0Ð
1r   