GNU Radio 3.6.3.1 C++ API
gr_buffer Class Reference

Single writer, multiple reader fifo. More...

#include <gr_buffer.h>

Public Member Functions

virtual ~gr_buffer ()
int space_available ()
 return number of items worth of space available for writing
int bufsize () const
 return size of this buffer in items
voidwrite_pointer ()
 return pointer to write buffer.
void update_write_pointer (int nitems)
 tell buffer that we wrote nitems into it
void set_done (bool done)
bool done () const
gr_block_sptr link ()
 Return the block that writes to this buffer.
size_t nreaders () const
gr_buffer_readerreader (size_t index)
gruel::mutexmutex ()
uint64_t nitems_written ()
size_t get_sizeof_item ()
void add_item_tag (const gr_tag_t &tag)
 Adds a new tag to the buffer.
void prune_tags (uint64_t max_time)
 Removes all tags before max_time from buffer.
std::deque< gr_tag_t >::iterator get_tags_begin ()
std::deque< gr_tag_t >::iterator get_tags_end ()

Protected Attributes

char * d_base
unsigned int d_bufsize

Friends

class gr_buffer_reader
GR_CORE_API gr_buffer_sptr gr_make_buffer (int nitems, size_t sizeof_item, gr_block_sptr link)
 Allocate a buffer that holds at least nitems of size sizeof_item.
GR_CORE_API gr_buffer_reader_sptr gr_buffer_add_reader (gr_buffer_sptr buf, int nzero_preload, gr_block_sptr link)
 Create a new gr_buffer_reader and attach it to buffer buf.

Detailed Description

Single writer, multiple reader fifo.

Constructor & Destructor Documentation

virtual gr_buffer::~gr_buffer ( )
virtual

Member Function Documentation

void gr_buffer::add_item_tag ( const gr_tag_t tag)

Adds a new tag to the buffer.

Parameters
tagthe new tag
int gr_buffer::bufsize ( ) const
inline

return size of this buffer in items

bool gr_buffer::done ( ) const
inline
size_t gr_buffer::get_sizeof_item ( )
inline
std::deque<gr_tag_t>::iterator gr_buffer::get_tags_begin ( )
inline
std::deque<gr_tag_t>::iterator gr_buffer::get_tags_end ( )
inline
gr_block_sptr gr_buffer::link ( )
inline

Return the block that writes to this buffer.

gruel::mutex* gr_buffer::mutex ( )
inline
uint64_t gr_buffer::nitems_written ( )
inline
size_t gr_buffer::nreaders ( ) const
inline
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.
gr_buffer_reader* gr_buffer::reader ( size_t  index)
inline
void gr_buffer::set_done ( bool  done)
int gr_buffer::space_available ( )

return number of items worth of space available for writing

void gr_buffer::update_write_pointer ( int  nitems)

tell buffer that we wrote nitems into it

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

GR_CORE_API gr_buffer_reader_sptr gr_buffer_add_reader ( gr_buffer_sptr  buf,
int  nzero_preload,
gr_block_sptr  link 
)
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.
friend class gr_buffer_reader
friend
GR_CORE_API gr_buffer_sptr gr_make_buffer ( int  nitems,
size_t  sizeof_item,
gr_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

char* gr_buffer::d_base
protected
unsigned int gr_buffer::d_bufsize
protected

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