o
    X۷iH                     @  sh   d dl mZ d dlmZmZmZ dZG dd deZG dd deZdd	 Z	d
d Z
dd Zdd ZdS )    )annotations)	Structurec_intc_byte   c                   @  &   e Zd Zdefdefdee fgZdS )action_tactionlengthvalueN__name__
__module____qualname__r   r   _VALUE_BUFFER_SIZE_fields_ r   r   R/home/ubuntu/vllm_env/lib/python3.10/site-packages/cupyx/distributed/_klv_utils.pyr   	   s
    
r   c                   @  r   )result_action_tstatusr
   r   Nr   r   r   r   r   r      s
    
r   c                 C  R   t |}t|tdtt |   }tt |}tt | dks#J t| ||S N    r   )len	bytearrayr   r   from_bufferr   )r	   r   l_vr   r   r   get_action_t      r   c                 C  r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   get_result_action_t!   r   r   c                 C  s`   t | tu rtd}|t|  }|S t | tu r)td}|t| jddd }|S td|  )N   b   i   big)	byteorderzinvalid type for self.value )typebytesr   intto_bytes
ValueError)r   vr   r   r   create_value_bytes*   s   r+   c                 C  sd   | dd dkr t | dd  dksJ t| dd  d} | S | dd dkr0t| dd  } | S )Nr      r!   r"   r#   r    )r   r'   
from_bytesr&   )r*   r   r   r   get_value_from_bytes6   s   r.   N)
__future__r   ctypesr   r   r   r   r   r   r   r   r+   r.   r   r   r   r   <module>   s    		