4#ifndef SYMBIAN_AGENT_FRAME_H_
5#define SYMBIAN_AGENT_FRAME_H_
14#include "absl/status/statusor.h"
34 std::span<const std::uint8_t> prefix,
62 absl::StatusOr<std::size_t>
Consume(std::span<const std::uint8_t>
bytes,
63 std::optional<Frame>* completed);
66 std::size_t maximum_frame_bytes_;
67 std::uint8_t prefix_[4] = {};
68 std::size_t prefix_size_ = 0;
69 std::size_t expected_size_ = 0;
79 std::span<const std::uint8_t>
payload,
95 std::optional<Frame>
Pop();
99 std::size_t
size()
const {
return frames_.size(); }
105 std::deque<Frame> frames_;
106 std::size_t queued_bytes_ = 0;
Incrementally reads one network-order, 32-bit length-prefixed frame.
Definition frame.h:45
std::size_t buffered_bytes() const
Number of payload bytes already buffered for the current frame.
Definition frame.h:50
void Reset()
Clear an incomplete frame after disconnect or cancellation.
Definition frame.cc:30
absl::StatusOr< std::size_t > Consume(std::span< const std::uint8_t > bytes, std::optional< Frame > *completed)
Consume at most one frame from bytes.
Definition frame.cc:37
Completed inbound frames awaiting schema dispatch.
Definition frame.h:89
std::optional< Frame > Pop()
Remove the oldest frame, if any.
Definition frame.cc:109
void Clear()
Release all queued payloads after disconnect.
Definition frame.cc:119
absl::Status Push(Frame frame)
Admit a completed frame or return ResourceExhausted.
Definition frame.cc:96
std::size_t size() const
Definition frame.h:99
std::size_t queued_bytes() const
Definition frame.h:97
absl::StatusOr< std::string > EncodeFrame(std::span< const std::uint8_t > payload, std::size_t maximum_frame_bytes)
Encode one already validated MessagePack payload for an authenticated transport.
Definition frame.cc:79
constexpr std::size_t kMaximumFrameBytes
Maximum encoded MessagePack payload accepted by the phone profile.
Definition frame.h:19
constexpr std::size_t kMaximumQueuedBytes
Maximum encoded bytes queued across inbound phone messages.
Definition frame.h:22
constexpr std::size_t kMaximumQueuedFrames
Maximum number of completed inbound phone messages.
Definition frame.h:25
absl::StatusOr< std::size_t > DecodeFrameLength(std::span< const std::uint8_t > prefix, std::size_t maximum_frame_bytes)
Validate a complete four-byte network-order prefix before allocation.
Definition frame.cc:12
std::string_view bytes
Definition exports.cc:74
std::string_view payload
Definition sis.cc:139
One length-prefixed MessagePack payload, without a parsed schema.
Definition frame.h:28
std::string payload
Definition frame.h:29