25 #ifndef TVM_RUNTIME_CRT_RPC_COMMON_SESSION_H_ 26 #define TVM_RUNTIME_CRT_RPC_COMMON_SESSION_H_ 92 static constexpr
const uint8_t kInvalidNonce = 0;
95 void* message_received_func_context)
96 : local_nonce_{kInvalidNonce},
98 state_{State::kReset},
101 receive_buffer_{receive_buffer},
102 receive_buffer_has_complete_message_{
false},
103 message_received_func_{message_received_func},
104 message_received_func_context_{message_received_func_context} {
108 if (receive_buffer_ !=
nullptr) {
109 receive_buffer_->Clear();
151 size_t message_size_bytes);
174 tvm_crt_error_t SendBodyChunk(
const uint8_t* chunk_data,
size_t chunk_size_bytes);
192 void ClearReceiveBuffer();
195 static const constexpr uint8_t kVersion = 0x01;
200 explicit SessionReceiver(
Session* session) : session_{session} {}
201 virtual ~SessionReceiver() {}
203 ssize_t Write(
const uint8_t* data,
size_t data_size_bytes)
override;
204 void PacketDone(
bool is_valid)
override;
207 void operator delete(
void*) noexcept {}
211 enum class State : uint8_t {
213 kNoSessionEstablished = 1,
214 kStartSessionSent = 2,
215 kSessionEstablished = 3,
218 void RegenerateNonce();
221 size_t message_size_bytes);
229 void OnSessionEstablishedMessage();
231 void OnSessionTerminatedMessage();
233 void SetSessionId(uint8_t initiator_nonce, uint8_t responder_nonce) {
234 session_id_ = initiator_nonce | (((uint16_t)responder_nonce) << 8);
237 uint8_t InitiatorNonce(uint16_t session_id) {
return session_id & 0xff; }
239 uint8_t ResponderNonce(uint16_t session_id) {
return (session_id >> 8) & 0xff; }
241 uint8_t local_nonce_;
242 uint16_t session_id_;
244 SessionReceiver receiver_;
247 bool receive_buffer_has_complete_message_;
248 MessageReceivedFunc message_received_func_;
249 void* message_received_func_context_;
256 #endif // TVM_RUNTIME_CRT_RPC_COMMON_SESSION_H_ Defines a buffer for use by the RPC framing layer.
Definition: frame_buffer.h:35
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36
Definition: write_stream.h:39
Session(Framer *framer, FrameBuffer *receive_buffer, MessageReceivedFunc message_received_func, void *message_received_func_context)
Definition: session.h:94
bool IsEstablished() const
Returns true if the session is in the established state.
Definition: session.h:183
Defines integral error codes returned by the CRT.
struct tvm::runtime::micro_rpc::SessionHeader SessionHeader
tvm_crt_error_t
Definition: error_codes.h:50
WriteStream * Receiver()
Obtain a WriteStream implementation for use by the framing layer.
Definition: session.h:141
Definition: framing.h:144
CRT communication session management class. Assumes the following properties provided by the underlyi...
Definition: session.h:73
MessageType
Definition: session.h:38