GNU Radio Manual and C++ API Reference  3.8.1.0
The Free & Open Software Radio Ecosystem
gr::buffer Class Reference

Single writer, multiple reader fifo. More...

#include <gnuradio/buffer.h>

Public Member Functions

virtual ~buffer ()
 
int space_available ()
 return number of items worth of space available for writing More...
 
int bufsize () const
 return size of this buffer in items More...
 
const char * base () const
 return the base address of the buffer More...
 
void * write_pointer ()
 return pointer to write buffer. More...
 
void update_write_pointer (int nitems)
 tell buffer that we wrote nitems into it More...
 
void set_done (bool done)
 
bool done () const
 
block_sptr link ()
 Return the block that writes to this buffer. More...
 
size_t nreaders () const
 
buffer_readerreader (size_t index)
 
gr::thread::mutexmutex ()
 
uint64_t nitems_written ()
 
void reset_nitem_counter ()
 
size_t get_sizeof_item ()
 
void add_item_tag (const tag_t &tag)
 Adds a new tag to the buffer. More...
 
void remove_item_tag (const tag_t &tag, long id)
 Removes an existing tag from the buffer. More...
 
void prune_tags (uint64_t max_time)
 Removes all tags before max_time from buffer. More...
 
std::multimap< uint64_t, tag_t >::iterator get_tags_begin ()
 
std::multimap< uint64_t, tag_t >::iterator get_tags_end ()
 
std::multimap< uint64_t, tag_t >::iterator get_tags_lower_bound (uint64_t x)
 
std::multimap< uint64_t, tag_t >::iterator get_tags_upper_bound (uint64_t x)
 

Protected Attributes

char * d_base
 
unsigned int d_bufsize
 
unsigned d_max_reader_delay
 

Friends

class buffer_reader
 
GR_RUNTIME_API buffer_sptr make_buffer (int nitems, size_t sizeof_item, block_sptr link)
 Allocate a buffer that holds at least nitems of size sizeof_item. More...
 
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

Single writer, multiple reader fifo.

Constructor & Destructor Documentation

◆ ~buffer()

virtual gr::buffer::~buffer ( )
virtual

Member Function Documentation

◆ add_item_tag()

void gr::buffer::add_item_tag ( const tag_t tag)

Adds a new tag to the buffer.

Parameters
tagthe new tag

◆ base()

const char* gr::buffer::base ( ) const
inline

return the base address of the buffer

◆ bufsize()

int gr::buffer::bufsize ( ) const
inline

return size of this buffer in items

◆ done()

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

◆ get_sizeof_item()

size_t gr::buffer::get_sizeof_item ( )
inline

◆ get_tags_begin()

std::multimap<uint64_t, tag_t>::iterator gr::buffer::get_tags_begin ( )
inline

◆ get_tags_end()

std::multimap<uint64_t, tag_t>::iterator gr::buffer::get_tags_end ( )
inline

◆ get_tags_lower_bound()

std::multimap<uint64_t, tag_t>::iterator gr::buffer::get_tags_lower_bound ( uint64_t  x)
inline

◆ get_tags_upper_bound()

std::multimap<uint64_t, tag_t>::iterator gr::buffer::get_tags_upper_bound ( uint64_t  x)
inline

◆ link()

block_sptr gr::buffer::link ( )
inline

Return the block that writes to this buffer.

◆ mutex()

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

◆ nitems_written()

uint64_t gr::buffer::nitems_written ( )
inline

◆ nreaders()

size_t gr::buffer::nreaders ( ) const
inline

◆ prune_tags()

void gr::buffer::prune_tags ( uint64_t  max_time)

Removes all tags before max_time from buffer.

Parameters
max_timethe time (item number) to trim up until.

◆ reader()

buffer_reader* gr::buffer::reader ( size_t  index)
inline

◆ remove_item_tag()

void gr::buffer::remove_item_tag ( const tag_t tag,
long  id 
)

Removes an existing tag from the buffer.

If no such tag is found, does nothing. Note: Doesn't actually physically delete the tag, but marks it as deleted. For the user, this has the same effect: Any subsequent calls to get_tags_in_range() will not return the tag.

Parameters
tagthe tag that needs to be removed
idthe unique ID of the block calling this function

◆ reset_nitem_counter()

void gr::buffer::reset_nitem_counter ( )
inline

◆ set_done()

void gr::buffer::set_done ( bool  done)

◆ space_available()

int gr::buffer::space_available ( )

return number of items worth of space available for writing

◆ update_write_pointer()

void gr::buffer::update_write_pointer ( int  nitems)

tell buffer that we wrote nitems into it

◆ write_pointer()

void* gr::buffer::write_pointer ( )

return pointer to write buffer.

The return value points at space that can hold at least space_available() items.

Friends And Related Function Documentation

◆ 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_reader

friend class buffer_reader
friend

◆ make_buffer

GR_RUNTIME_API buffer_sptr make_buffer ( int  nitems,
size_t  sizeof_item,
block_sptr  link 
)
friend

Allocate a buffer that holds at least nitems of size sizeof_item.

The total size of the buffer will be rounded up to a system dependent boundary. This is typically the system page size, but under MS windows is 64KB.

Parameters
nitemsis the minimum number of items the buffer will hold.
sizeof_itemis the size of an item in bytes.
linkis the block that writes to this buffer.

Member Data Documentation

◆ d_base

char* gr::buffer::d_base
protected

◆ d_bufsize

unsigned int gr::buffer::d_bufsize
protected

◆ d_max_reader_delay

unsigned gr::buffer::d_max_reader_delay
protected

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