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相关推荐

  1. srsLTE源码学习:安全证书polarssl

    Table of Contents liblte_ssl.h liblte_ssl.h lib\include\srslte\common    2101    4/8/2019    19 #ifn ...

  2. srsLTE源码学习:S1接口抓包s1ap_pcap.h,s1ap_pcap.cc

    Table of Contents 介绍 图例 代码 s1ap_pcap.h s1ap_pcap.cc s1ap_test.cc 介绍 S1接口是LTE eNodeB(基站)与 EPC(分组核心网)之 ...

  3. srsLTE源码学习:RLC,无线链路控制子层抓包rlc_pcap.h,rlc_pcap.cc

    RLC,无线链路控制子层 RLC(Radio Link Control,无线链路层控制协议)是GPRS/WCDMA/TD-SCDMA/LTE 等无线通信系统中的无线链路控制层协议.在WCDMA系统中, ...

  4. srsLTE源码学习:逻辑信道多路复用与MAC CE分解pdu_queue.h,pdu_queue.cc

    Logical Channel Demultiplexing and MAC CE dissassemble - 逻辑信道多路复用与MAC CE分解 CE设备:Customer Edge,客户侧边缘设 ...

  5. srsLTE源码学习:协议数据单元PDU:pdu.h

    TX与RX TXD 发送数据 Transmit(tx) Data 的简写形式. RXD 接收数据 Receive(rx) Data 的简写形式. x没有特定的意思,就是一开始这么写,之后都这么用了,约 ...

  6. srsLTE源码学习:网络附属存储抓包nas_pcap.h

    Table of Contents nas_pcap.h    lib\include\srslte\common    667    4/10/2019    1 nas_pcap.cc    li ...

  7. srsLTE源码学习:GTP:GPRS Turning Protocol- GPRS隧道协议

    Table of Contents gtpc.h * GTP-C v2 Header  GPRS Turning Protocol <GPRS Turning Protocol> GPRS ...

  8. srsLTE源码学习:MAC层抓包pcap

    Table of Contents pcap.h    lib\include\srslte\common    13945    2/28/2019    182 mac_pcap.h    lib ...

  9. srsLTE源码学习:NAS非接入层、PDCP分组数据汇聚协议、PDU 协议数据单元 头文件

    非接入层(原名NAS - Non-access stratum) 分组数据汇聚协议(PDCP - Packet Data Convergence Protocol) 协议数据单元(PDU - Prot ...

最新文章

  1. python3 元组 tuple 操作
  2. Python程序设计题解【蓝桥杯官网题库】 DAY12-算法训练
  3. kali linux wps 2019 删除_一分钟,轻松上手 Linux 安装QQ,让你简单开启聊天办公新环境...
  4. No changes detected
  5. Dictionary,hashtable, stl:map有什么异同?
  6. 89. Gray Code - LeetCode
  7. TensorFlow——tf.contrib.layers库中的相关API
  8. java用多线程实现爬虫_JAVA 多线程爬虫实例详解
  9. 常用Fragstats景观指数
  10. Learning to Fuse Asymmetric Feature Maps in Siamese Trackers 论文与代码笔记
  11. 微软ASP加密软件 sce10ch
  12. 跨越“数字鸿沟”,日本老年智能化服务的解法
  13. Unity工程里的那些东西
  14. 为什么要用Linux系统
  15. 8 种方案机智应对后端一次性返回 10万 条数据
  16. 【Unity】新手初学Animation实现人物移动
  17. php拓展so,PHP扩展开发之动态加载so模块与静态重编译PHP(上)-Go语言中文社区...
  18. 天下长安手游怎么用电脑玩 天下长安手游模拟器教程
  19. VUE、JS判断当前是早上,中午,下午还是晚上
  20. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java缺陷管理系统d6ltf

热门文章

  1. snmp v3的安全配置 snmp认证与加密配置(53)
  2. BZOJ4423: [AMPPZ2013]Bytehattan
  3. bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级【分层图+spfa】
  4. #运算符、不同的指针类型、数组和指针、指针运算、堆、栈、静态区、只读区、下标VS指针...
  5. 第三方插件渗透攻击之KingView
  6. fullpage.js(cndjs)
  7. 5-35 有理数均值 (20分)
  8. jQuery使用ajax错误的重复发送请求的解决办法
  9. Gstreamer的一些基本概念与A/V同步分析
  10. eclipse查看android源码包(eclipse导入android源码包)