GNU Radio 3.6.5 C++ API

gr_buffer Class Reference

Single writer, multiple reader fifo. More...

#include <gr_buffer.h>

List of all members.

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
void * write_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 remove_item_tag (const gr_tag_t &tag, long id)
 Removes an existing tag from 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::remove_item_tag ( const gr_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
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: