36 ris::BufferPtr buff = std::make_shared<ris::Buffer>(source, data, meta, size, alloc);
44ris::Buffer::Buffer(
ris::PoolPtr source,
void* data, uint32_t meta, uint32_t size, uint32_t alloc) {
46 data_ =
reinterpret_cast<uint8_t*
>(data);
59ris::Buffer::~Buffer() {
60 source_->retBuffer(data_, meta_, allocSize_);
69uint32_t ris::Buffer::getMeta() {
74void ris::Buffer::setMeta(uint32_t meta) {
79void ris::Buffer::adjustHeader(int32_t value) {
81 if (value < 0 &&
static_cast<uint32_t
>(abs(value)) > headRoom_)
83 "Attempt to reduce header with size %" PRIu32
" by %" PRIi32,
88 if (value > 0 &&
static_cast<uint32_t
>(value) > (rawSize_ - (headRoom_ + tailRoom_)))
90 "Attempt to increase header by %" PRIi32
" in buffer with size %" PRIu32,
92 (rawSize_ - (headRoom_ + tailRoom_))));
98 if (payload_ < headRoom_) payload_ = headRoom_;
101 if ((tmpPtr = frame_.lock())) tmpPtr->setSizeDirty();
105void ris::Buffer::zeroHeader() {
109 if ((tmpPtr = frame_.lock())) tmpPtr->setSizeDirty();
113void ris::Buffer::adjustTail(int32_t value) {
115 if (value < 0 &&
static_cast<uint32_t
>(abs(value)) > tailRoom_)
117 "Attempt to reduce tail with size %" PRIu32
" by %" PRIi32,
122 if (value > 0 &&
static_cast<uint32_t
>(value) > (rawSize_ - (headRoom_ + tailRoom_)))
124 "Attempt to increase header by %" PRIi32
" in buffer with size %" PRIu32,
126 (rawSize_ - (headRoom_ + tailRoom_))));
132 if ((tmpPtr = frame_.lock())) tmpPtr->setSizeDirty();
136void ris::Buffer::zeroTail() {
140 if ((tmpPtr = frame_.lock())) tmpPtr->setSizeDirty();
147uint8_t* ris::Buffer::begin() {
148 return (data_ + headRoom_);
155uint8_t* ris::Buffer::end() {
156 return (data_ + (rawSize_ - tailRoom_));
163uint8_t* ris::Buffer::endPayload() {
164 return (data_ + payload_);
173uint32_t ris::Buffer::getSize() {
174 return (rawSize_ - (headRoom_ + tailRoom_));
182uint32_t ris::Buffer::getAvailable() {
185 ret = rawSize_ - payload_;
202uint32_t ris::Buffer::getPayload() {
203 return (payload_ - headRoom_);
207void ris::Buffer::setPayload(uint32_t size) {
208 if (size > (rawSize_ - (headRoom_ + tailRoom_)))
210 "Attempt to set payload to size %" PRIu32
" in buffer with size %" PRIu32,
212 (rawSize_ - (headRoom_ + tailRoom_))));
214 payload_ = size + headRoom_;
217 if ((tmpPtr = frame_.lock())) tmpPtr->setSizeDirty();
224void ris::Buffer::minPayload(uint32_t size) {
225 if (size > getPayload()) setPayload(size);
229void ris::Buffer::adjustPayload(int32_t value) {
230 if (value < 0 &&
static_cast<uint32_t
>(abs(value)) > getPayload())
232 "Attempt to decrease payload by %" PRIi32
" in buffer with size %" PRIu32,
236 setPayload(getPayload() + value);
240void ris::Buffer::setPayloadFull() {
241 payload_ = rawSize_ - tailRoom_;
244 if ((tmpPtr = frame_.lock())) tmpPtr->setSizeDirty();
248void ris::Buffer::setPayloadEmpty() {
249 payload_ = headRoom_;
252 if ((tmpPtr = frame_.lock())) tmpPtr->setSizeDirty();
256void ris::Buffer::debug(uint32_t idx) {
257 printf(
" Buffer: %" PRIu32
", AllocSize: %" PRIu32
", RawSize: %" PRIu32
", HeadRoom: %" PRIu32
258 ", TailRoom: %" PRIu32
", Payload: %" PRIu32
"\n",
static GeneralError create(std::string src, const char *fmt,...)
Creates a formatted error instance.
std::shared_ptr< rogue::interfaces::stream::Pool > PoolPtr
Shared pointer alias for Pool.
std::shared_ptr< rogue::interfaces::stream::Buffer > BufferPtr
Shared pointer alias for Buffer.
std::shared_ptr< rogue::interfaces::stream::Frame > FramePtr
Shared pointer alias for Frame.