o
    `۷i                     @   sr   d dl mZ d dlmZ d dlmZ d dlmZ daeG dd deZ	ede
fd	d
Zedd Zdd ZdS )    )Enum)Version)try_import_msgpack)DeveloperAPINc                   @   sd   e Zd ZedZdZdZdZdZdZ	dZ
dZd	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S )RLlinkz0.0.1PINGEPISODES	GET_STATE
GET_CONFIGEPISODES_AND_GET_STATEPONG	SET_STATE
SET_CONFIGACTION_SPACEOBSERVATION_SPACEGET_WORKER_ARGSGET_WEIGHTSREPORT_SAMPLESSTART_EPISODE
GET_ACTION
LOG_ACTIONLOG_RETURNSEND_EPISODEc                 C   s   | j S )N)name)self r   S/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/rllib/env/external/rllink.py__str__3   s   zRLlink.__str__N)__name__
__module____qualname__r   PROTOCOL_VERSIONr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s*    r   messagec              
   C   s   t du r	tdda t j|dd}tt|dd}z
| ||  W dS  ty? } zt	d| d|  d	| d}~ww )
z3Sends a message to the client with a length header.NTerror)use_bin_type   utf-8zError sending message z to server on socket ! Original error was: )
msgpackr   packbstrlenzfillencodesendall	ExceptionConnectionError)sock_r"   bodyheaderer   r   r   send_rllink_message7   s   
r6   c              
   C   s   t du r	tdda z*t| d}t|d}t| |}t j|dd}d|vr*td	t|d|fW S  t	yI } z
td
|  d| d}~ww )zHReceives a message from the client following the length-header protocol.NTr#   r&   r'   F)rawtypez@Protocol Error! Message from peer does not contain `type` field.z,Error receiving message from peer on socket r(   )
r)   r   _get_num_bytesintdecodeunpackbr1   r   popr0   )r2   r4   
msg_lengthr3   r"   r5   r   r   r   get_rllink_messageI   s(   


r?   c                 C   sN   d}t ||k r%| |t | }|std|  d||7 }t ||k s|S )z6Helper function to receive a specific number of bytes.    zNo data received from socket !)r,   recvr1   )r2   	num_bytesdatapacketr   r   r   r9   e   s   r9   )enumr   packaging.versionr   ray.rllib.utils.checkpointsr   ray.util.annotationsr   r)   r   dictr6   r?   r9   r   r   r   r   <module>   s    +
