Stream Tags
用来为一组数据打上标签,便于上层处理的机制。准同步机制,与数据流并行传输,直到sink终止。stream Tags实际是<key,value>的键值对,key和value都是多态类型,key指定了数据流的内容,value存储对应的说明信息。标签还有有一个标注tag流来源的srcid。
tag的结构,类型gr::tag_t,公共属性:
which_output 关联的输出流
abs_offset 输出流的大小,也就是nitems_written.
key
value tag的信息
srcid tag流的来源,defaults to PMT_F
添加函数
void gr::block::add_item_tag(unsigned int which_output,
uint64_t abs_offset,
const pmt::pmt_t & key,
const pmt::pmt_t & value,
const pmt::pmt_t & srcid = pmt::PMT_F
)
获取tag
void get_tags_in_range( std::vector<tag_t> &v,
unsigned int which_input,
uint64_t abs_start,
uint64_t abs_end);
三种标签传递方式:
void set_tag_propagation_policy(tag_propagation_policy_t p);
例子:
继承了gr_block类
unsigned long int nitems_read(unsigned int which_input);
unsigned long int nitems_written(unsigned int which_output);