buffer_pool: add helper to build byte_buffer from raw payload+len

This commit is contained in:
Andre Puschmann 2021-11-23 14:56:12 +01:00
parent 45d59cf686
commit 97997b6d0b
1 changed files with 17 additions and 0 deletions

View File

@ -178,6 +178,23 @@ inline unique_byte_buffer_t make_byte_buffer(const char* debug_ctxt) noexcept
return buffer;
}
inline unique_byte_buffer_t make_byte_buffer(const uint8_t* payload, uint32_t len, const char* debug_ctxt) noexcept
{
std::unique_ptr<byte_buffer_t> buffer(new (std::nothrow) byte_buffer_t());
if (buffer == nullptr) {
srslog::fetch_basic_logger("POOL").error("Failed to allocate byte buffer in %s", debug_ctxt);
} else {
if (buffer->get_tailroom() >= len) {
memcpy(buffer->msg, payload, len);
buffer->N_bytes = len;
} else {
srslog::fetch_basic_logger("POOL").error(
"Failed to create byte buffer in %s. Payload too large (%d > %d)", debug_ctxt, len, buffer->get_tailroom());
}
}
return buffer;
}
namespace detail {
struct byte_buffer_pool_deleter {