srsLTE源码学习:度量中心:metrics_hub.h
Table of Contents
metrics_hub.h
PS:《srsLTE源码学习:绑核创建线程threads.h, threads.c》
metrics_hub.h
lib\include\srslte\common 2456 4/10/2019 38
/******************************************************************************* File: metrics_hub.h* Description: Centralizes metrics interfaces to allow different metrics clients* to get metrics *****************************************************************************/#ifndef SRSLTE_METRICS_HUB_H
#define SRSLTE_METRICS_HUB_H#include <vector>
#include "srslte/common/threads.h"
#include "srslte/srslte.h"namespace srslte {template<typename metrics_t>
class metrics_interface
{
public:virtual bool get_metrics(metrics_t &m) = 0;
}; template<typename metrics_t>
class metrics_listener //指标侦听器
{
public: virtual void set_metrics(metrics_t &m, const uint32_t period_usec) = 0;virtual void stop() = 0;
};template<typename metrics_t>
//metrics hub: 指标中心
class metrics_hub : public periodic_thread //periodic 周期
{//hub: 枢纽; metrics:指标
/*
度量 measurement, metric, metrics, measuring
量度 measure, measuring, metrics, metric
指标 index, indicators, target, parameters, metrics, criteria, markers
*/
public:metrics_hub() //hub 枢纽:m(NULL){for (int i = 0; i < 3; ++i) {sleep_period_start[i] = (struct timeval){};}}bool init(metrics_interface<metrics_t> *m_, float report_period_secs_=1.0) {m = m_;// Start with user-default prioritystart_periodic(report_period_secs_*1e6, -2);return true;}void stop() {stop_thread();// stop all listenersfor (uint32_t i=0;i<listeners.size();i++) {listeners[i]->stop();}thread_cancel();wait_thread_finish();}void add_listener(metrics_listener<metrics_t> *listener) {listeners.push_back(listener);}private:void run_period(){// get current time and check how long we sleptgettimeofday(&sleep_period_start[2], NULL);get_time_interval(sleep_period_start);uint32_t period = sleep_period_start[0].tv_sec*1e6 + sleep_period_start[0].tv_usec;if (m) {metrics_t metric;m->get_metrics(metric);for (uint32_t i=0;i<listeners.size();i++) {listeners[i]->set_metrics(metric, period);}}// store start of sleep periodgettimeofday(&sleep_period_start[1], NULL);}metrics_interface<metrics_t> *m;std::vector<metrics_listener<metrics_t>*> listeners;struct timeval sleep_period_start[3];
};} // namespace srslte#endif // SRSLTE_METRICS_HUB_H
srsLTE源码学习:度量中心:metrics_hub.h相关推荐
- srsLTE源码学习:安全证书polarssl
Table of Contents liblte_ssl.h liblte_ssl.h lib\include\srslte\common 2101 4/8/2019 19 #ifn ...
- srsLTE源码学习:S1接口抓包s1ap_pcap.h,s1ap_pcap.cc
Table of Contents 介绍 图例 代码 s1ap_pcap.h s1ap_pcap.cc s1ap_test.cc 介绍 S1接口是LTE eNodeB(基站)与 EPC(分组核心网)之 ...
- srsLTE源码学习:RLC,无线链路控制子层抓包rlc_pcap.h,rlc_pcap.cc
RLC,无线链路控制子层 RLC(Radio Link Control,无线链路层控制协议)是GPRS/WCDMA/TD-SCDMA/LTE 等无线通信系统中的无线链路控制层协议.在WCDMA系统中, ...
- srsLTE源码学习:逻辑信道多路复用与MAC CE分解pdu_queue.h,pdu_queue.cc
Logical Channel Demultiplexing and MAC CE dissassemble - 逻辑信道多路复用与MAC CE分解 CE设备:Customer Edge,客户侧边缘设 ...
- srsLTE源码学习:协议数据单元PDU:pdu.h
TX与RX TXD 发送数据 Transmit(tx) Data 的简写形式. RXD 接收数据 Receive(rx) Data 的简写形式. x没有特定的意思,就是一开始这么写,之后都这么用了,约 ...
- srsLTE源码学习:网络附属存储抓包nas_pcap.h
Table of Contents nas_pcap.h lib\include\srslte\common 667 4/10/2019 1 nas_pcap.cc li ...
- srsLTE源码学习:GTP:GPRS Turning Protocol- GPRS隧道协议
Table of Contents gtpc.h * GTP-C v2 Header GPRS Turning Protocol <GPRS Turning Protocol> GPRS ...
- srsLTE源码学习:MAC层抓包pcap
Table of Contents pcap.h lib\include\srslte\common 13945 2/28/2019 182 mac_pcap.h lib ...
- srsLTE源码学习:NAS非接入层、PDCP分组数据汇聚协议、PDU 协议数据单元 头文件
非接入层(原名NAS - Non-access stratum) 分组数据汇聚协议(PDCP - Packet Data Convergence Protocol) 协议数据单元(PDU - Prot ...
最新文章
- python3 元组 tuple 操作
- Python程序设计题解【蓝桥杯官网题库】 DAY12-算法训练
- kali linux wps 2019 删除_一分钟,轻松上手 Linux 安装QQ,让你简单开启聊天办公新环境...
- No changes detected
- Dictionary,hashtable, stl:map有什么异同?
- 89. Gray Code - LeetCode
- TensorFlow——tf.contrib.layers库中的相关API
- java用多线程实现爬虫_JAVA 多线程爬虫实例详解
- 常用Fragstats景观指数
- Learning to Fuse Asymmetric Feature Maps in Siamese Trackers 论文与代码笔记
- 微软ASP加密软件 sce10ch
- 跨越“数字鸿沟”,日本老年智能化服务的解法
- Unity工程里的那些东西
- 为什么要用Linux系统
- 8 种方案机智应对后端一次性返回 10万 条数据
- 【Unity】新手初学Animation实现人物移动
- php拓展so,PHP扩展开发之动态加载so模块与静态重编译PHP(上)-Go语言中文社区...
- 天下长安手游怎么用电脑玩 天下长安手游模拟器教程
- VUE、JS判断当前是早上,中午,下午还是晚上
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java缺陷管理系统d6ltf
热门文章
- snmp v3的安全配置 snmp认证与加密配置(53)
- BZOJ4423: [AMPPZ2013]Bytehattan
- bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级【分层图+spfa】
- #运算符、不同的指针类型、数组和指针、指针运算、堆、栈、静态区、只读区、下标VS指针...
- 第三方插件渗透攻击之KingView
- fullpage.js(cndjs)
- 5-35 有理数均值 (20分)
- jQuery使用ajax错误的重复发送请求的解决办法
- Gstreamer的一些基本概念与A/V同步分析
- eclipse查看android源码包(eclipse导入android源码包)