25 #ifndef TVM_RUNTIME_CRT_RPC_COMMON_FRAMING_H_
26 #define TVM_RUNTIME_CRT_RPC_COMMON_FRAMING_H_
37 uint16_t
crc16_compute(
const uint8_t* data,
size_t data_size_bytes, uint16_t* previous_crc);
44 static constexpr
const size_t kCrc =
sizeof(uint16_t);
51 state_{State::kFindPacketStart},
52 saw_escape_start_{false},
53 num_buffer_bytes_valid_{0} {}
85 bool IsBufferFull(
size_t buffer_full_bytes) {
86 return num_buffer_bytes_valid_ >= buffer_full_bytes;
113 tvm_crt_error_t ConsumeInput(uint8_t* buffer,
size_t buffer_size_bytes,
size_t* bytes_filled,
118 enum class State : uint8_t {
119 kFindPacketStart = 0,
120 kFindPacketLength = 1,
126 const uint8_t* input_;
127 size_t input_size_bytes_;
129 bool saw_escape_start_;
132 uint8_t buffer_[128];
135 size_t num_buffer_bytes_valid_;
138 size_t num_payload_bytes_remaining_;
146 typedef ssize_t (*
WriteFunc)(
const uint8_t* data,
size_t data_size_bytes);
149 : stream_{stream}, state_{State::kReset}, num_payload_bytes_remaining_{0} {}
228 static constexpr
const size_t kMaxStackBufferSizeBytes = 128;
230 enum class State : uint8_t {
238 kTransmitPacketPayload = 2,
250 tvm_crt_error_t WriteAndCrc(
const uint8_t* data,
size_t data_size_bytes,
bool escape,
260 size_t num_payload_bytes_remaining_;
Definition: framing.h:144
tvm_crt_error_t Write(const uint8_t *payload, size_t payload_size_bytes)
Frame and write a full packet.
ssize_t(* WriteFunc)(const uint8_t *data, size_t data_size_bytes)
Definition: framing.h:146
tvm_crt_error_t WritePayloadChunk(const uint8_t *payload_chunk, size_t payload_chunk_size_bytes)
Write payload data to the wire.
tvm_crt_error_t FinishPacket()
tvm_crt_error_t StartPacket(size_t payload_size_bytes)
Start framing and writing a new packet to the wire.
Framer(WriteStream *stream)
Definition: framing.h:148
static constexpr const size_t kCrc
Definition: framing.h:44
static constexpr const size_t kPayloadLength
Definition: framing.h:43
Unframer(WriteStream *stream)
Definition: framing.h:49
tvm_crt_error_t Write(const uint8_t *data, size_t data_size_bytes, size_t *bytes_consumed)
Push data into unframer and try to decode one packet.
void Reset()
Reset unframer to initial state.
size_t BytesNeeded()
Return an underestimate of the number of bytes needed from the wire.
Definition: write_stream.h:39
Defines integral error codes returned by the CRT.
tvm_crt_error_t
Definition: error_codes.h:50
Escape
Definition: framing.h:39
uint16_t crc16_compute(const uint8_t *data, size_t data_size_bytes, uint16_t *previous_crc)
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36