23 #ifndef INCLUDED_GR_BUFFER_H
24 #define INCLUDED_GR_BUFFER_H
28 #include <boost/weak_ptr.hpp>
61 int space_available ();
74 void *write_pointer ();
79 void update_write_pointer (
int nitems);
81 void set_done (
bool done);
82 bool done ()
const {
return d_done; }
89 size_t nreaders()
const {
return d_readers.size(); }
103 void add_item_tag(
const gr_tag_t &tag);
110 void prune_tags(uint64_t max_time);
113 std::deque<gr_tag_t>::iterator
get_tags_end() {
return d_item_tags.end(); }
128 size_t d_sizeof_item;
129 std::vector<gr_buffer_reader *> d_readers;
130 boost::weak_ptr<gr_block> d_link;
137 unsigned int d_write_index;
138 uint64_t d_abs_write_offset;
140 std::deque<gr_tag_t> d_item_tags;
141 uint64_t d_last_min_items_read;
144 index_add (
unsigned a,
unsigned b)
151 assert (s < d_bufsize);
156 index_sub (
unsigned a,
unsigned b)
163 assert ((
unsigned) s < d_bufsize);
167 virtual bool allocate_buffer (
int nitems,
size_t sizeof_item);
219 int items_available ()
const;
238 const void *read_pointer ();
243 void update_read_pointer (
int nitems);
245 void set_done (
bool done) { d_buffer->set_done (done); }
246 bool done ()
const {
return d_buffer->done (); }
274 void get_tags_in_range(std::vector<gr_tag_t> &v,
288 unsigned int d_read_index;
289 uint64_t d_abs_read_offset;
290 boost::weak_ptr<gr_block> d_link;