 |
GNU Radio Manual and C++ API Reference
3.9.1.0
The Free & Open Software Radio Ecosystem
|
|
Go to the documentation of this file.
11 #ifndef INCLUDED_GR_RUNTIME_BUFFER_H
12 #define INCLUDED_GR_RUNTIME_BUFFER_H
19 #include <boost/weak_ptr.hpp>
40 block_sptr link = block_sptr());
57 int space_available();
67 const char*
base()
const {
return static_cast<const char*
>(d_base); }
75 void* write_pointer();
80 void update_write_pointer(
int nitems);
82 void set_done(
bool done);
83 bool done()
const {
return d_done; }
88 block_sptr
link() {
return block_sptr(d_link); }
90 size_t nreaders()
const {
return d_readers.size(); }
106 void add_item_tag(
const tag_t& tag);
120 void remove_item_tag(
const tag_t& tag,
long id);
127 void prune_tags(uint64_t max_time);
131 return d_item_tags.begin();
133 std::multimap<uint64_t, tag_t>::iterator
get_tags_end() {
return d_item_tags.end(); }
136 return d_item_tags.lower_bound(x);
140 return d_item_tags.upper_bound(x);
163 std::unique_ptr<gr::vmcircbuf> d_vmcircbuf;
164 size_t d_sizeof_item;
165 std::vector<buffer_reader*> d_readers;
166 std::weak_ptr<block> d_link;
173 unsigned int d_write_index;
174 uint64_t d_abs_write_offset;
176 std::multimap<uint64_t, tag_t> d_item_tags;
177 uint64_t d_last_min_items_read;
179 unsigned index_add(
unsigned a,
unsigned b)
186 assert(s < d_bufsize);
190 unsigned index_sub(
unsigned a,
unsigned b)
197 assert((
unsigned)s < d_bufsize);
201 virtual bool allocate_buffer(
int nitems,
size_t sizeof_item);
216 buffer(
int nitems,
size_t sizeof_item, block_sptr link);
221 void drop_reader(buffer_reader* reader);
233 block_sptr link = block_sptr(),
258 void declare_sample_delay(
unsigned delay);
265 unsigned sample_delay()
const;
270 int items_available()
const;
275 buffer_sptr
buffer()
const {
return d_buffer; }
288 const void* read_pointer();
293 void update_read_pointer(
int nitems);
295 void set_done(
bool done) { d_buffer->set_done(done); }
296 bool done()
const {
return d_buffer->done(); }
310 block_sptr
link() {
return block_sptr(d_link); }
326 void get_tags_in_range(std::vector<tag_t>&
v,
340 buffer_sptr d_buffer;
341 unsigned int d_read_index;
342 uint64_t d_abs_read_offset;
343 std::weak_ptr<block> d_link;
344 unsigned d_attr_delay;
unsigned int d_bufsize
Definition: buffer.h:157
unsigned d_max_reader_delay
Definition: buffer.h:160
GR_RUNTIME_API long buffer_reader_ncurrently_allocated()
returns # of buffer_readers currently allocated
buffer_reader * reader(size_t index)
Definition: buffer.h:91
std::multimap< uint64_t, tag_t >::iterator get_tags_upper_bound(uint64_t x)
Definition: buffer.h:138
void set_done(bool done)
Definition: buffer.h:295
block_sptr link()
Return the block that writes to this buffer.
Definition: buffer.h:88
gr::thread::mutex * mutex()
Definition: buffer.h:93
void reset_nitem_counter()
Definition: buffer.h:97
int bufsize() const
return size of this buffer in items
Definition: buffer.h:62
uint64_t nitems_written()
Definition: buffer.h:95
block_sptr link()
Return the block that reads via this reader.
Definition: buffer.h:310
void reset_nitem_counter()
Definition: buffer.h:302
bool done() const
Definition: buffer.h:83
Definition: cc_common.h:35
std::multimap< uint64_t, tag_t >::iterator get_tags_begin()
Definition: buffer.h:129
#define GR_RUNTIME_API
Definition: gnuradio-runtime/include/gnuradio/api.h:18
buffer_sptr buffer() const
Return buffer this reader reads from.
Definition: buffer.h:275
size_t nreaders() const
Definition: buffer.h:90
gr::logger_ptr d_logger
Definition: buffer.h:49
How we keep track of the readers of a gr::buffer.
Definition: buffer.h:246
gr::thread::mutex * mutex()
Definition: buffer.h:298
std::multimap< uint64_t, tag_t >::iterator get_tags_end()
Definition: buffer.h:133
boost::mutex mutex
Definition: thread.h:37
gr::logger_ptr d_debug_logger
Definition: buffer.h:50
size_t get_sizeof_item()
Definition: buffer.h:99
size_t get_sizeof_item()
Definition: buffer.h:304
log4cpp::Category * logger_ptr
GR_LOG macros.
Definition: logger.h:60
const char * base() const
return the base address of the buffer
Definition: buffer.h:67
bool done() const
Definition: buffer.h:296
char * d_base
Definition: buffer.h:156
int max_possible_items_available() const
Return maximum number of items that could ever be available for reading. This is used as a sanity che...
Definition: buffer.h:281
Single writer, multiple reader fifo.
Definition: buffer.h:46
uint64_t nitems_read()
Definition: buffer.h:300
GR_RUNTIME_API long buffer_ncurrently_allocated()
returns # of buffers currently allocated
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition: basic_block.h:29
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.
GR_RUNTIME_API buffer_sptr make_buffer(int nitems, size_t sizeof_item, block_sptr link=block_sptr())
Allocate a buffer that holds at least nitems of size sizeof_item.
std::multimap< uint64_t, tag_t >::iterator get_tags_lower_bound(uint64_t x)
Definition: buffer.h:134