GNU Radio C++ API Reference g90d26cb
The Free & Open Software Radio Ecosystem
 
Loading...
Searching...
No Matches
gr::buffer_reader Class Reference

How we keep track of the readers of a gr::buffer. More...

#include <gnuradio/buffer_reader.h>

Public Member Functions

virtual ~buffer_reader ()
 
void declare_sample_delay (unsigned delay)
 
unsigned sample_delay () const
 
virtual int items_available () const
 Return number of items available for reading.
 
buffer_sptr buffer () const
 Return buffer this reader reads from.
 
int max_possible_items_available () const
 Return maximum number of items that could ever be available for reading. This is used as a sanity check in the scheduler to avoid looping forever.
 
const void * read_pointer ()
 return pointer to read buffer.
 
void update_read_pointer (int nitems)
 
void set_done (bool done)
 
bool done () const
 
gr::thread::mutexmutex ()
 
uint64_t nitems_read () const
 
void reset_nitem_counter ()
 
size_t get_sizeof_item ()
 
block_sptr link () const
 Return the block that reads via this reader.
 
void get_tags_in_range (std::vector< tag_t > &v, uint64_t abs_start, uint64_t abs_end)
 Given a [start,end), returns a vector all tags in the range.
 
template<typename predicate_t >
std::optional< gr::tag_tget_first_tag_in_range (uint64_t start, uint64_t end, predicate_t predicate)
 Get the first tag in specified range (if any), fulfilling criterion.
 
virtual bool input_blkd_cb_ready (int items_required) const
 Returns true when the current thread is ready to call the callback, false otherwise. Delegate calls to buffer class's input_blkd_cb_ready(). Note if input_blocked_callback is overridden then this function should also be overridden.
 
virtual bool input_blocked_callback (int items_required, int items_avail)
 Callback function that the scheduler will call when it determines that the input is blocked. Delegate calls to buffer class's input_blocked_callback(). Override this function if needed.
 
unsigned int get_read_index () const
 
uint64_t get_abs_read_offset () const
 

Protected Member Functions

 buffer_reader (buffer_sptr buffer, unsigned int read_index, block_sptr link)
 constructor is private. Use gr::buffer::add_reader to create instances
 

Protected Attributes

buffer_sptr d_buffer
 
unsigned int d_read_index
 
uint64_t d_abs_read_offset
 
std::weak_ptr< blockd_link
 
unsigned d_attr_delay
 

Friends

class buffer
 
class buffer_double_mapped
 
class buffer_single_mapped
 
class buffer_reader_sm
 
GR_RUNTIME_API buffer_reader_sptr buffer_add_reader (buffer_sptr buf, int nzero_preload, block_sptr link=block_sptr(), int delay=0)
 Create a new gr::buffer_reader and attach it to buffer buf.
 

Detailed Description

How we keep track of the readers of a gr::buffer.

Constructor & Destructor Documentation

◆ ~buffer_reader()

virtual gr::buffer_reader::~buffer_reader ( )
virtual

◆ buffer_reader()

gr::buffer_reader::buffer_reader ( buffer_sptr buffer,
unsigned int read_index,
block_sptr link )
protected

constructor is private. Use gr::buffer::add_reader to create instances

Member Function Documentation

◆ buffer()

buffer_sptr gr::buffer_reader::buffer ( ) const
inline

Return buffer this reader reads from.

◆ declare_sample_delay()

void gr::buffer_reader::declare_sample_delay ( unsigned delay)

Declares the sample delay for this reader.

See gr::block::declare_sample_delay for details.

Parameters
delayThe new sample delay

◆ done()

bool gr::buffer_reader::done ( ) const
inline

◆ get_abs_read_offset()

uint64_t gr::buffer_reader::get_abs_read_offset ( ) const
inline

◆ get_first_tag_in_range()

template<typename predicate_t >
std::optional< gr::tag_t > gr::buffer_reader::get_first_tag_in_range ( uint64_t start,
uint64_t end,
predicate_t predicate )
inlinenodiscard

Get the first tag in specified range (if any), fulfilling criterion.

See also
gr::block::get_first_tag_in_range

This function returns the lowest-offset tag in the range for whom the predicate function returns true.

The predicate function hence needs to map tags to booleans; its signature is bool function(const tag_t& tag_to check);

We're doing this here as a template in the block detail; allows inlining of the predicate check.

Parameters
starta uint64 count of the start of the range of interest
enda uint64 count of the end of the range of interest
predicatea function of tag_t, returning a boolean

◆ get_read_index()

unsigned int gr::buffer_reader::get_read_index ( ) const
inline

◆ get_sizeof_item()

size_t gr::buffer_reader::get_sizeof_item ( )
inline

◆ get_tags_in_range()

void gr::buffer_reader::get_tags_in_range ( std::vector< tag_t > & v,
uint64_t abs_start,
uint64_t abs_end )

Given a [start,end), returns a vector all tags in the range.

Get a vector of tags in given range. Range of counts is from start to end-1.

Tags are tuples of: (item count, source id, key, value)

Parameters
va vector reference to return tags into
abs_starta uint64 count of the start of the range of interest
abs_enda uint64 count of the end of the range of interest
idthe unique ID of the block to make sure already deleted tags are not returned

◆ input_blkd_cb_ready()

virtual bool gr::buffer_reader::input_blkd_cb_ready ( int items_required) const
inlinevirtual

Returns true when the current thread is ready to call the callback, false otherwise. Delegate calls to buffer class's input_blkd_cb_ready(). Note if input_blocked_callback is overridden then this function should also be overridden.

Reimplemented in gr::buffer_reader_sm.

◆ input_blocked_callback()

virtual bool gr::buffer_reader::input_blocked_callback ( int items_required,
int items_avail )
inlinevirtual

Callback function that the scheduler will call when it determines that the input is blocked. Delegate calls to buffer class's input_blocked_callback(). Override this function if needed.

Reimplemented in gr::buffer_reader_sm.

◆ items_available()

virtual int gr::buffer_reader::items_available ( ) const
virtual

Return number of items available for reading.

Reimplemented in gr::buffer_reader_sm.

◆ link()

block_sptr gr::buffer_reader::link ( ) const
inline

Return the block that reads via this reader.

◆ max_possible_items_available()

int gr::buffer_reader::max_possible_items_available ( ) const
inline

Return maximum number of items that could ever be available for reading. This is used as a sanity check in the scheduler to avoid looping forever.

◆ mutex()

gr::thread::mutex * gr::buffer_reader::mutex ( )
inline

◆ nitems_read()

uint64_t gr::buffer_reader::nitems_read ( ) const
inline

◆ read_pointer()

const void * gr::buffer_reader::read_pointer ( )

return pointer to read buffer.

The return value points to items_available() number of items

◆ reset_nitem_counter()

void gr::buffer_reader::reset_nitem_counter ( )
inline

◆ sample_delay()

unsigned gr::buffer_reader::sample_delay ( ) const

Gets the sample delay for this reader.

See gr::block::sample_delay for details.

◆ set_done()

void gr::buffer_reader::set_done ( bool done)
inline

◆ update_read_pointer()

void gr::buffer_reader::update_read_pointer ( int nitems)

Friends And Related Symbol Documentation

◆ buffer

friend class buffer
friend

◆ buffer_add_reader

GR_RUNTIME_API buffer_reader_sptr buffer_add_reader ( buffer_sptr buf,
int nzero_preload,
block_sptr link = block_sptr(),
int delay = 0 )
friend

Create a new gr::buffer_reader and attach it to buffer buf.

Parameters
bufis the buffer the gr::buffer_reader reads from.
nzero_preload– number of zero items to "preload" into buffer.
linkis the block that reads from the buffer using this gr::buffer_reader.
delayOptional setting to declare the buffer's sample delay.

◆ buffer_double_mapped

friend class buffer_double_mapped
friend

◆ buffer_reader_sm

friend class buffer_reader_sm
friend

◆ buffer_single_mapped

friend class buffer_single_mapped
friend

Member Data Documentation

◆ d_abs_read_offset

uint64_t gr::buffer_reader::d_abs_read_offset
protected

◆ d_attr_delay

unsigned gr::buffer_reader::d_attr_delay
protected

◆ d_buffer

buffer_sptr gr::buffer_reader::d_buffer
protected

◆ d_link

std::weak_ptr<block> gr::buffer_reader::d_link
protected

◆ d_read_index

unsigned int gr::buffer_reader::d_read_index
protected

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