OpenBMC:BmcWeb app.run

1.监听用户移除signal

//src\webserver_run.cpp
int run()
{...bmcweb::registerUserRemovedSignal();...
}
//include\user_monitor.hpp
inline void onUserRemoved(sdbusplus::message_t& msg)
{sdbusplus::message::object_path p;msg.read(p);std::string username = p.filename();persistent_data::SessionStore::getInstance().removeSessionsByUsername(username);
}inline void registerUserRemovedSignal()
{std::string userRemovedMatchStr =sdbusplus::bus::match::rules::interfacesRemoved("/xyz/openbmc_project/user");static sdbusplus::bus::match_t userRemovedMatch(*crow::connections::systemBus, userRemovedMatchStr, onUserRemoved);
}

关于注册signal,可以参考

sdbusplus:监听属性的变化_sdbusplus::bus::match::match-CSDN博客

这部分的作用是当发现某个用户被移除后,删除该用户的session

session部分后续再介绍

2.app.run获取socket

//src\webserver_run.cpp
int run()
{...app.run();systemBus->request_name("xyz.openbmc_project.bmcweb");io.run();crow::connections::systemBus = nullptr;return 0;
}

 其中app.run的定义如下:

//http\app.hpp
void run()
{validate();std::vector<Acceptor> acceptors = setupSocket();server.emplace(this, std::move(acceptors));server->run();
}

 validate();是用于检验route,这个后续跟路由一起解释

//http\http_server.hpp
struct Acceptor
{boost::asio::ip::tcp::acceptor acceptor;HttpType httpType;
};
//http\http_connect_types.hpp
enum class HttpType
{HTTPS, // Socket supports HTTPS onlyHTTP,  // Socket supports HTTP onlyBOTH   // Socket supports both HTTPS and HTTP, with HTTP Redirect
};

static std::vector<Acceptor> setupSocket() 的作用是获取socket,这个后续再详细解释

 3.app.run构造server对象

//http\http_server.hpp
template <typename Handler, typename Adaptor = boost::asio::ip::tcp::socket>
class Server
{
public:Server(Handler* handlerIn, std::vector<Acceptor>&& acceptorsIn) :acceptors(std::move(acceptorsIn)),// NOLINTNEXTLINE(misc-include-cleaner)signals(getIoContext(), SIGINT, SIGTERM, SIGHUP), handler(handlerIn){}...
private:std::vector<Acceptor> acceptors;Handler* handler;
}

OpenBMC:BmcWeb实例化App-CSDN博客

介绍了server类,但是当时没有构造server类的实例,

构造server类的实例是在app.run中

server.emplace(this, std::move(acceptors));完成的

将App做为handle传入Server,用于反向指回app对象

将setupSocket()获取的socket也传入了Server,用于后续接受连接请求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22521.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java数据结构第十二期:走进二叉树的奇妙世界(一)

专栏&#xff1a;数据结构(Java版) 个人主页&#xff1a;手握风云 目录 一、树型结构 1.1. 树的定义 1.2. 树的基本概念 1.3. 树的表示形式 二、二叉树 2.1. 概念 2.2. 两种特殊的二叉树 2.3. 二叉树的性质 2.4. 二叉树的存储 三、二叉树的基本操作 一、树型结构 1.…

nginx 反向代理 配置请求路由

nginx | 反向代理 | 配置请求路由 nginx简介 Nginx&#xff08;发音为“Engine-X”&#xff09;是一款高性能、开源的 Web 服务器和反向代理服务器&#xff0c;同时也支持邮件代理和负载均衡等功能。它由俄罗斯程序员伊戈尔西索夫&#xff08;Igor Sysoev&#xff09;于 2004…

ath9k(Atheros芯片)开源驱动之wifi连接

为什么会推荐这个wifi 驱动进行学习&#xff1f; ath9k&#xff08;Atheros芯片&#xff09;&#xff1a;代码结构清晰&#xff0c;适合学习实践 为什么我只在开篇写了一个wifi连接的操作&#xff1f; 先让一个开源驱动在你的硬件上跑起来&#xff0c;再逐步修改&#xff0c…

LLaMA-Factory|微调大语言模型初探索(4),64G显存微调13b模型

上篇文章记录了使用lora微调deepseek-7b&#xff0c;微调成功&#xff0c;但是微调llama3-8b显存爆炸&#xff0c;这次尝试使用qlora微调HQQ方式量化&#xff0c;微调更大参数体量的大语言模型&#xff0c;记录下来微调过程&#xff0c;仅供参考。 对过程不感兴趣的兄弟们可以直…

知识管理平台如何实现高效数据整合?

内容概要 现代知识管理平台通过架构化的四库体系&#xff08;资源库、规则库、模型库、知识库&#xff09;驱动数据智能整合进程。核心机制依托智能数据工具集对异构数据进行自动化清洗与语义标注&#xff0c;其跨源数据汇聚能力支持超过200种结构化与非结构化数据源的接入&am…

近10年气象分析(深度学习)

这是一个气象数据分析程序&#xff0c;主要用于分析和可视化气象数据。以下是该文件的主要功能&#xff1a; 1. 数据加载 在线数据&#xff1a;尝试从 GitHub 加载气象数据。 示例数据&#xff1a;如果无法加载在线数据&#xff0c;程序会自动生成示例数据。 2. 数据分析 …

DeepSeek最新开源动态:核心技术公布

2月21日午间&#xff0c;DeepSeek在社交平台X发文称&#xff0c;从下周开始&#xff0c;他们将开源5个代码库&#xff0c;以完全透明的方式与全球开发者社区分享他们的研究进展。并将这一计划定义为“Open Source Week”。 DeepSeek表示&#xff0c;即将开源的代码库是他们在线…

wps中zotero插件消失,解决每次都需要重新开问题

参考 查看zotero目录 D:\zotero\integration\word-for-windows 加载项点击 dotm即可 长期解决 把dom 复制到 C:\Users\89735\AppData\Roaming\kingsoft\office6\templates\wps\zh_CN还是每次都需要重新开的话 重新加载一下

洛谷B3629

B3629 吃冰棍 - 洛谷 代码区&#xff1a; #include<algorithm> #include<iostream>using namespace std; int main(){int n,ans;cin >> n;for(int in/2;i<n;i){int ti;ans0;while(t>3){t-3;ans3;t;}if(anst>n){cout << i;return 0;}}return…

VMware安装Centos 9虚拟机+设置共享文件夹+远程登录

一、安装背景 工作需要安装一台CentOS-Stream-9的机器环境&#xff0c;所以一开始的安装准备工作有&#xff1a; vmware版本&#xff1a;VMware Workstation 16 镜像版本&#xff1a;CentOS-Stream-9-latest-x86_64-dvd1.iso &#xff08;kernel-5.14.0&#xff09; …

[ProtoBuf] 介绍 | 保姆级win/linux安装教程

目录 一、序列化概念 二、ProtoBuf 是什么 三、ProtoBuf 的使用特点 ProtoBuf 在不同操作系统下的安装 一、ProtoBuf 在 Windows 下的安装 二、ProtoBuf 在 Linux 下的安装 三、检查是否安装成功 安装教程 可以直接目录跳转到后面 笔记参考&#xff1a;官方文档 一、序…

element ui的select选择框

我们首先先试一下&#xff0c;这个东西怎么玩的 <el-select v-model"select" change"changeSelect"><el-option value"香蕉"></el-option><el-option value"菠萝"></el-option><el-option value&quo…

51单片机学习之旅——定时器

打开软件 1与其它等于其它&#xff0c;0与其它等于0 1或其它等于1&#xff0c;0或其它等于其它 TMODTMOD&0xF0;//0xF01111 0000进行与操作&#xff0c;高四位保持&#xff0c;低四位清零&#xff0c;高四位定时器1&#xff0c;低四位定时器0 TMODTMOD|0x01;//0x010000 0…

【跟我学YOLO】(1)YOLO12:以注意力为中心的物体检测

欢迎关注『跟我学 YOLO』系列 【跟我学YOLO】&#xff08;1&#xff09;YOLO12&#xff1a;以注意力为中心的物体检测] 0. YOLOv12 简介0.1 YOLO12 论文下载0.2 YOLO12 的主要改进0.3 YOLO12 支持的任务和性能0.4 论文摘要 1. 背景介绍2. 相关的工作3. 方法3.1 效率分析3.2 区域…

基于Martin的全国基础底图实现

概述 前面有文章基于Martin实现MapboxGL自定义底图分享了Martin的使用&#xff0c;本文使用网络收集的数据实现了全国基础数据的收集和基础底图。 实现后效果 实现 1. 数据准备 实例中包含如下数据&#xff1a; 边界线和九段线数据省边界面数据省会城市点数据市边界面数据…

网页版的俄罗斯方块

1、新建一个txt文件 2、打开后将代码复制进去保存 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>俄…

HTML之JavaScript DOM简介

HTML之JavaScript DOM简介 DOM对象是一个树形对象 DOM树上的结点类型分类&#xff1a; 元素节点 element 标签属性节点 attribute 属性文本节点 text 双标签中间的文本 HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UT…

【MATLAB例程】RSSI/PLE定位与卡尔曼滤波NLOS抑制算法,附完整代码

本 MATLAB 代码实现了基于接收信号强度指示(RSSI)和路径损耗模型(PLE)的定位算法,并结合卡尔曼滤波技术进行非视距(NLOS)干扰抑制。通过模拟真实运动轨迹,代码展示了如何在存在NLOS干扰的情况下进行有效的定位。订阅专栏后,可阅读完整代码,可直接运行 文章目录 运行结…

使用IDEA提交SpringBoot项目到Gitee上

登录Gitee并新建仓库 创建本地仓库 提交本地代码到本地仓库 提交本地代码到远程仓库

LLM Agent:PaSa

阅读原文 LLM Agent&#xff1a;PaSa 以 PaSa&#xff08;Paper Search&#xff09;为例&#xff0c;接下来将介绍由 LLM 驱动的先进的论文搜索智能体。PaSa 能够自主做出一系列决策&#xff0c;包括调用搜索工具、阅读论文以及选择相关参考文献&#xff0c;最终为复杂的学术…