uvcc
libuv C++ bindings
uv::buffer Class Reference

Encapsulates uv_buf_t data type and provides uv_buf_t[] functionality. More...

#include "buffer.hpp"

Public Types

using uv_t = ::uv_buf_t
 
using sink_cb_t = std::function< void(buffer &) >
 The function type of the callback called when the reference count of the buffer using within the program becomes zero and the buffer instance is going to be destroyed. uvcc creates a new variable referencing the buffer instance (so its usage count gets equal to one) and passes a reference to this variable to the sink callback. If the client code wish to store this free buffer for further reuse, it must move (or copy) the variable into some designated storage structure, otherwise no any action is required, and the buffer will be destroyed.
 

Public Member Functions

 buffer ()
 Create a single uv_buf_t null-initialized buffer structure. More...
 
 buffer (const std::initializer_list< std::size_t > &_len_values)
 Create an array of initialized uv_buf_t buffer describing structures. More...
 
 buffer (const buffer &_that)
 
bufferoperator= (const buffer &_that)
 
 buffer (buffer &&_that) noexcept
 
bufferoperator= (buffer &&_that) noexcept
 
void swap (buffer &_that) noexcept
 
long nrefs () const noexcept
 The current number of existing references to the same buffer as this variable refers to.
 
sink_cb_tsink_cb () const noexcept
 
std::size_t count () const noexcept
 The number of the uv_buf_t structures in the array.
 
uv_t & operator[] (const std::size_t _i) const noexcept
 Access to the _i-th uv_buf_t buffer structure in the array.
 
decltype(uv_t::base) & base (const std::size_t _i=0) const noexcept
 The .base field of the _i-th buffer structure.
 
decltype(uv_t::len) & len (const std::size_t _i=0) const noexcept
 The .len field of the _i-th buffer structure.
 
 operator const uv_t * () const noexcept
 
 operator uv_t * () noexcept
 
 operator bool () const noexcept
 Equivalent to (base() != nullptr).
 

Detailed Description

Encapsulates uv_buf_t data type and provides uv_buf_t[] functionality.

Definition at line 28 of file buffer.hpp.

Constructor & Destructor Documentation

◆ buffer() [1/2]

uv::buffer::buffer ( )
inline

Create a single uv_buf_t null-initialized buffer structure.

That is:

char* uv_buf_t.base = nullptr;
size_t uv_buf_t.len = 0;

Definition at line 180 of file buffer.hpp.

◆ buffer() [2/2]

uv::buffer::buffer ( const std::initializer_list< std::size_t > &  _len_values)
inlineexplicit

Create an array of initialized uv_buf_t buffer describing structures.

Each uv_buf_t structure in the array is effectively initialized with an allocated memory chunk of the specified length. The number of structures in the array is equal to the number of elements in the initializer list. The value of the .len field and the length of the each allocated chunk pointed by the .base field is equal to the corresponding value from the initializer list.

All chunks are located seamlessly one after the next within a single continuous memory block. Therefore the .base field of the next buffer just points to the byte following the end of the previous buffer and the .base field of the first buffer in the array points to the whole memory area of the total length of all buffers.

If some of the initializing values are zeros, the .base field of the such a buffer is not a nullptr. Instead it keeps pointing inside the continuous memory block and is considered as a zero-length chunk.

All of the initializing values being zeros results in creating an array of null-initialized uv_buf_t structures.

Definition at line 199 of file buffer.hpp.


The documentation for this class was generated from the following file: