GNU Radio Manual and C++ API Reference  3.10.9.1
The Free & Open Software Radio Ecosystem
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. More...
 
buffer_sptr buffer () const
 Return buffer this reader reads from. More...
 
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. More...
 
const void * read_pointer ()
 return pointer to read buffer. More...
 
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. More...
 
void get_tags_in_range (std::vector< tag_t > &v, uint64_t abs_start, uint64_t abs_end, long id)
 Given a [start,end), returns a vector all tags in the range. More...
 
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. More...
 
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. More...
 
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 More...
 

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, int delay)
 Create a new gr::buffer_reader and attach it to buffer buf. More...
 

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_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,
long  id 
)

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 Function 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,
int  delay 
)
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: