
    Zd                         d Z ddlZddlmZ ddlZddlZddlmZ ddlm	Z	 ddlm
Z da	 ddlmZ n# e$ r eZY nw xY wd	 Zd
 Z G d de          ZeZddgZdS )zDummy Frame object    N)Event)ETERM   )ffi)lib)
bufferablec                     t          |           t          u r| S t          | t                    st          |           } |                                 S )zReturn content of obj as bytes)typebytes
isinstance
memoryviewtobytes)objs    8lib/python3.11/site-packages/zmq/backend/cffi/message.py_contentr      sC    CyyE
c:&& oo;;==    c                    t          j                    }| dk    r|t          j        k    rt          j                            |          |t          j        k    r$t          j                            t                    |t          k    rt          j        
                    |          t          j                            |          dS )Nr   )C	zmq_errnoerrnoEINTRzmqerrorInterrruptedSystemCallEAGAINAgainr   ContextTerminatedZMQError)rcerrs     r   	_check_rcr"   !   s    
+--C	Rxx%+)223777EL  )//%(((E\\)--c222)$$S)))1r   c                       e Zd ZdZdZdZdZdZdZdZ	dZ
dZddZd Zd Zd Zed             Zed             Zd	 Zd
 Zd Zed             Zd Zd Zd ZdS )FrameNFc                     d| _         t          j        dt          j        t          j        d                              | _        |rt          j        | _	        t          |t                    rt          d          |1t          j        | j                  }t          |           d| _         d S || _        t!          |          t"          u r|| _        t'          |          | _        t          j        | j                  }| j        j        }||r	||k     rd}nd}|rht          j        | j        |          }t          |           | j        t          j        t          j        | j                  |          d d <   d| _         d S |r.t5                      }|| _        t          j        |          | _	        t:          ddlma t          j        dt          j        t          j        d	                              }	t:                               || j                  |	d         _!        t:          j"        st          j#                    t:          _"        t          j        d
t:          j"                  |	d         _$        t          j        dt:          j%        j&                  |	d         _'        t          j(        | j        |||	          }|dk    r<t          j)        |	           t          j)        | j                   t          |           d| _         d S )NTzzmq_msg_t[1]	zmq_msg_tz@Unicode strings are not allowed. Only: bytes, buffer interfaces.Fr   )gczzhint[1]zhintzmutex_t*zvoid*)*_failed_initr   castr   mallocsizeofzmq_msgr   _FINISHED_TRACKERtrackerr   str	TypeErrorzmq_msg_initr"   _datar
   r   _bytesr   _bufferfrom_buffernbyteszmq_msg_init_sizebufferzmq_msg_datar   tracker_eventMessageTrackerzmq_gczmq.utils.garbager'   storeid_push_mutexmutex_allocatemutex_push_socket
underlyingsockzmq_wrap_msg_init_datafree)
selfdatatrackcopycopy_thresholdr    c_data
data_len_cevthints
             r   __init__zFrame.__init__:   s    xK9P9P0Q0QRR  	10DLdC   	R   <--BbMMM %DF
::DK!$''..\(
< *~"="= 	$T\:>>BbMMMFJlCJq~dl33Z@@C %DF  	3''C!$D-c22DL
 >666666x
AHSZ-@-@$A$ABB\\$(:;;Q
! 	4!"!1!3!3FV-?@@Qx)<)GHHQ %L	
 
 77F4LLLF4<   bMMM!r   c                 R    | j         s| j        s|                                  d S d S d S N)closedr)   closerI   s    r   __del__zFrame.__del__   s;    { 	4#4 	JJLLLLL	 	 	 	r   c                     | j         s| j        s| j        d S d| _         t          j        | j                  }t          j        | j                   d | _        |dk    rt          |           d S d S )NTr   )rU   r)   r-   r   zmq_msg_closerH   r"   )rI   r    s     r   rV   zFrame.close   sr    ; 	$+ 	t|/CF_T\**	t|77bMMMMM 7r   c                     | j         Ht          j        t          j        | j                  t          j        | j                            | _         | j        t          | j                   | _        dS dS )zQone-time extract buffer from zmq_msg

        for Frames created by recv
        N)	r3   r   r9   r   r:   r-   zmq_msg_sizer5   r   rW   s    r   _buffer_from_zmq_msgzFrame._buffer_from_zmq_msg   sc    
 :t|,,anT\.J.J DJ <%dj11DLLL  r   c                 F    | j         |                                  | j         S rT   )r5   r]   rW   s    r   r9   zFrame.buffer   s$    <%%'''|r   c                 Z    | j         | j                                        | _         | j         S rT   )r4   r9   r   rW   s    r   r   zFrame.bytes   s'    ;+--//DK{r   c                     | j         j        S rT   )r9   r7   rW   s    r   __len__zFrame.__len__   s    {!!r   c                 2    | j         t          |          k    S rT   )r   r   )rI   others     r   __eq__zFrame.__eq__   s    zXe__,,r   c                 4    | j                                         S rT   )r   decoderW   s    r   __str__zFrame.__str__   s    z  """r   c                 4    | j                                         S rT   )r/   donerW   s    r   ri   z
Frame.done   s    |  """r   c                     | j         S rT   )r9   )rI   flagss     r   
__buffer__zFrame.__buffer__   s
    {r   c                 *    |                                  S )a<  Create a shallow copy of the message.

        This does not copy the contents of the Frame, just the pointer.
        This will increment the 0MQ ref count of the message, but not
        the ref count of the Python object. That is only done once when
        the Python is first turned into a 0MQ message.
        )	fast_copyrW   s    r   __copy__zFrame.__copy__   s     ~~r   c                     t                      }t          j        |j        | j                   | j        |_        | j        |_        | j        |_        | j        |_        |S )zPFast shallow copy of the Frame.

        Does not copy underlying data.
        )r$   r   zmq_msg_copyr-   r3   r5   r;   r/   )rI   new_msgs     r   rn   zFrame.fast_copy   sR    
 '' 	
w555
, !% 2,r   )NFNN)__name__
__module____qualname__r3   r/   rU   morer5   r4   r)   r;   r-   rR   rX   rV   r]   propertyr9   r   ra   rd   rg   ri   rl   ro   rn    r   r   r$   r$   /   s2       EGFDGFLMGO" O" O" O"b    
2 
2 
2   X
   X
" " "- - -# # # # # X#           r   r$   Message)__doc__r   	threadingr   r   	zmq.errorzmq.constantsr   _cffir   r   r   r=   __pypy__.bufferabler   maybe_bufferableImportErrorobjectr   r"   r$   ry   __all__rx   r   r   <module>r      s     
        



                      	BBBBBBB       m m m m m m m m` I
s   1 ;;