11 #ifndef INCLUDED_GR_RUNTIME_BUFFER_SINGLE_MAPPED_H 12 #define INCLUDED_GR_RUNTIME_BUFFER_SINGLE_MAPPED_H 46 int space_available()
override;
48 void update_reader_block_history(
unsigned history,
int delay)
override;
54 bool input_blkd_cb_ready(
int items_required,
unsigned read_index)
override;
60 bool input_blocked_callback(
int items_required,
62 unsigned read_index)
override = 0;
67 bool output_blkd_cb_ready(
int output_multiple)
override;
73 bool output_blocked_callback(
int output_multiple,
bool force)
override = 0;
81 bool allocate_buffer(
int nitems)
override;
87 virtual bool do_allocate_buffer(
size_t final_nitems,
size_t sizeof_item) = 0;
96 assert(s < d_bufsize);
108 assert((
unsigned)s < d_bufsize);
117 uint64_t downstream_lcm_nitems,
119 block_sptr buf_owner);
146 uint64_t downstream_lcm_nitems,
147 uint32_t downstream_max_out_mult,
149 block_sptr buf_owner);
177 virtual bool input_blocked_callback_logic(
int items_required,
207 virtual bool output_blocked_callback_logic(
int output_multiple,
How we keep track of the readers of a gr::buffer.
Definition: buffer_reader.h:48
gr::logger_ptr d_debug_logger
Definition: buffer_single_mapped.h:34
std::shared_ptr< logger > logger_ptr
Definition: logger.h:233
block_sptr buf_owner()
Return the block that owns this buffer.
Definition: buffer_single_mapped.h:41
unsigned index_add(unsigned a, unsigned b) override
Increment read or write index for this buffer.
Definition: buffer_single_mapped.h:89
unsigned index_sub(unsigned a, unsigned b) override
Decrement read or write index for this buffer.
Definition: buffer_single_mapped.h:100
block_sptr d_buf_owner
Definition: buffer_single_mapped.h:121
GR_RUNTIME_API buffer_sptr make_buffer(int nitems, size_t sizeof_item, uint64_t downstream_lcm_nitems, uint32_t downstream_max_out_mult, block_sptr link=block_sptr(), block_sptr buf_owner=block_sptr())
Allocate a buffer that holds at least nitems of size sizeof_item.
#define GR_RUNTIME_API
Definition: gnuradio-runtime/include/gnuradio/api.h:18
A single mapped buffer where wrapping conditions are handled explicitly via input/output_blocked_call...
Definition: buffer_single_mapped.h:30
gr::logger_ptr d_logger
Definition: buffer_single_mapped.h:33
Single writer, multiple reader fifo.
Definition: buffer.h:66
GNU Radio logging wrapper.
Definition: basic_block.h:29
std::unique_ptr< char[]> d_buffer
Definition: buffer_single_mapped.h:123
std::function< void *(void *, const void *, std::size_t)> mem_func_t
Definition: buffer.h:36