当前位置: 首页 > news >正文

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,用于后续接受连接请求。

相关文章:

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 …...

hot100_74. 搜索二维矩阵

hot100_74. 搜索二维矩阵 思路 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否…...

光明谷推出AT指令版本的蓝牙音箱SOC 开启便捷智能音频开发新体验

前言 在蓝牙音箱市场竞争日益激烈的当下&#xff0c;开发一款性能卓越且易于上手的蓝牙音箱&#xff0c;成为众多厂商追求的目标。而光明谷科技有限公司推出的 AT 指令版本的蓝牙音箱 SOC&#xff0c;无疑为行业带来了全新的解决方案&#xff0c;以其诸多独特卖点&#xff0c;迅…...

基于windows的docker-desktop安装kubenetes以及dashboard

我们需要k8s环境做各种小实验可以本地安装一个&#xff0c;这里介绍win11如何通过docker-desktop安装k8s以及通过helm安装dashboard。 下载docker-desktop地址https://www.docker.com/get-started/打开【控制面板】->打开【启用和关闭windows功能】->分别勾选【hyper-v】…...

MT7628基于原厂的SDK包, 修改ra1网卡的MAC方法。

1、在/etc/config/wireless文件添加多个WIFI网卡的方法。 2、修改WIFI驱动&#xff0c;在src/embedded/ap/ap.c文件里面&#xff0c;从系统文件信息来修改ra1网卡的MAC内容&#xff0c;添加红色部分源代码。 RTMP_IO_WRITE32(pAd, RMAC_RMACDR, Value); if (idx > 0) …...

网络安全第三次练习

一、实验拓扑 二、实验要求 配置真实DNS服务信息&#xff0c;创建虚拟服务&#xff0c;配置DNS透明代理功能 三、需求分析 1.创建用户并配置认证策略 2.安全策略划分接口 3.ip与策略配置 四、实验步骤 1.划分安全策略接口 2.创建用户并进行策略认证 3.配置安全策略 4.NAT配…...

BFS 和 DFS(深度优先搜索、广度优先搜索)

深度优先搜索&#xff08;DFS&#xff09;和广度优先搜索&#xff08;BFS&#xff09;是两种常用的图遍历算法&#xff0c;用于解决图相关的问题。它们在搜索问题中具有广泛的应用&#xff0c;如路径搜索、连通性检测等。 以下是具体区别&#xff1a; &#xff08;图片引自&am…...

Casbin 权限管理介绍及在 Go 语言中的使用入门

引言 在现代软件开发过程中&#xff0c;权限管理是一个至关重要的环节&#xff0c;它关系到系统的安全性和用户体验。Casbin 是一个强大的访问控制库&#xff0c;支持多种访问控制模型&#xff0c;如 ACL&#xff08;访问控制列表&#xff09;、RBAC&#xff08;基于角色的访问…...

Two Sum

声明&#xff1a;博主为算法新手&#xff0c;博客仅作为个人学习记录 作为新手我的做法 &#xff08;1&#xff09;数组nums遍历一遍挑选出小于target的值及其下标&#xff0c;值存入temp,下标存到indices &#xff08;2&#xff09;遍历temp找到符合temp[i]temp[j]target的两个…...

3.3.2 交易体系构建——缠论操作思路

本节我们基于交易目标(规避下跌趋势,参与上涨趋势)来构建基于上涨趋势的缠论交易体系。建立上涨趋势的缠论交易体系需要以下几个步骤: 识别下跌走势大概率完成的位置 等待出现转折结构 确定交易模型并交易 从概率的角度来说,判断走势结束是个概率事件。为构建成功较高的交…...

[SQL] 事务的四大特性(ACID)

&#x1f384;事务的四大特性 以下就是事务的四大特性&#xff0c;简称ACID。 原子性&#x1f4e2;事务时不可分割的最小操作单元&#xff0c;要么全部成功&#xff0c;要么全部失败。一致性&#x1f4e2;事务完成后&#xff0c;必须使所有的数据都保持一致隔离性&#x1f4e2…...

使用 Three.js 实现流光特效

大家好&#xff01;我是 [数擎AI]&#xff0c;一位热爱探索新技术的前端开发者&#xff0c;在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情&#xff0c;欢迎关注我的文章&#xff0c;我们一起成长、进步&#xff01; 开发领域&#xff1a;前端开发 | AI…...

Error [ERR_REQUIRE_ESM]: require() of ES Module

报错信息&#xff1a; 【报错】Message.js 导入方式不对&#xff0c;用的是 ES Moudle 的语法&#xff0c;提示使用 import 引入文件 项目开发没有用到 js-message 依赖&#xff0c;是 node-ipc 依赖中用到的 js-message 依赖&#xff0c; node-ipc 中限制 js-message 版本&a…...

沉浸式翻译插件深度评测:打破语言壁垒的黑科技利器

在信息爆炸的时代,语言障碍成为了许多人获取信息的一大难题。尤其是在浏览外文网站、观看外语视频或阅读外文文档时,语言不通往往会让人倍感困扰。然而,一款名为沉浸式翻译的黑科技插件,却以其强大的翻译能力和便捷的使用体验,成为了众多用户打破语言壁垒的首选工具。本文…...

Java 中 HTTP 协议版本使用情况剖析

Java 中 HTTP 协议版本使用情况剖析 一、HTTP/1.1 与 HTTP/2 概述 (一)HTTP/1.1 HTTP/1.1 是广泛应用且成熟的 HTTP 协议版本,它在互联网发展历程中扮演了重要角色。其特点主要包括: 连接方式:默认采用短连接,即每次请求都要建立新的 TCP 连接,请求完成后断开。不过也…...

蓝桥杯学习大纲

&#xff08;致酷德与热爱算法、编程的小伙伴们&#xff09; 在查阅了相当多的资料后&#xff0c;发现没有那篇博客、文章很符合我们备战蓝桥杯的学习路径。所以&#xff0c;干脆自己整理一篇&#xff0c;欢迎大家补充&#xff01; 一、题型分布&#xff1a; 题型分布为填空…...

VSCode ssh远程连接内网服务器(不能上网的内网环境的Linux服务器)的终极解决方案

VSCode ssh远程连接内网服务器&#xff08;不能上网的内网环境的Linux服务器&#xff09; 离线下载vscode-server并安装: 如果远程端不能联网可以下载包离线安装,下载 vscode-server 的 url 需要和 vscode 客户端版本的 commit-id 对应.通过 vscode 面板的帮助->关于可以获…...

【多模态处理篇五】【DeepSeek文档解析:PDF/Word智能处理引擎】

你知道吗?全球每天产生的PDF文档超过10亿份,但90%的上班族还在用复制粘贴的笨办法处理文档!DeepSeek文档解析引擎就像给你的电脑装上了"文档翻译官",能把PDF/Word里的文字、表格、公式甚至排版样式都变成AI能理解的"语言"。举个真实场景:法务小姐姐用…...

STM32-心知天气项目

一、项目需求 使用 ESP8266 通过 HTTP 获取天气数据&#xff08;心知天气&#xff09;&#xff0c;并显示在 OLED 屏幕上。 按键 1 &#xff1a;循环切换今天 / 明天 / 后天天气数据&#xff1b; 按键 2 &#xff1a;更新天气。 二、项目框图 三、cjson作用 https://gi…...

cs106x-lecture14(Autumn 2017)-SPL实现

打卡cs106x(Autumn 2017)-lecture14 (以下皆使用SPL实现&#xff0c;非STL库&#xff0c;后续课程结束会使用STL实现) 1、min Write a function named min that accepts a pointer to a ListNode representing the front of a linked list. Your function should return the …...

6种二极管的区别和用法

一、通用二极管代表型号&#xff1a;1N4001~1N4007、M1、M4、M7等&#xff1b;1.1 特性单向导通、PN结反向耐压高&#xff0c;通常为50~1kv;正向压降0.6~1.5V左右&#xff0c;根据材料不同以及导通电流不同而变化&#xff1b;开关速度慢-us级别下面列出M7-通用二极管的数据手册…...

LabML实验追踪器深度解析:从基础指标到自定义可视化

LabML实验追踪器深度解析&#xff1a;从基础指标到自定义可视化 【免费下载链接】labml &#x1f50e; Monitor deep learning model training and hardware usage from your mobile phone &#x1f4f1; 项目地址: https://gitcode.com/gh_mirrors/la/labml LabML是一款…...

Windows系统优化终极神器:WinUtil一键提升性能的完整指南

Windows系统优化终极神器&#xff1a;WinUtil一键提升性能的完整指南 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 你是否厌倦了Windows系统…...

狂人印奇入主阶跃星辰:从“技术理想”到“商业狂想”,一场AI独角兽的绝地反击

狂人印奇入主阶跃星辰&#xff1a;从“技术理想”到“商业狂想”&#xff0c;一场AI独角兽的绝地反击左手旷视&#xff0c;右手阶跃&#xff0c;印奇在AI 2.0时代布下一盘怎样的棋&#xff1f;前言 2026年&#xff0c;中国大模型赛道的竞争已进入白热化阶段。在“AI六小龙”中&…...

5分钟彻底卸载OneDrive:Windows 10系统清理终极指南

5分钟彻底卸载OneDrive&#xff1a;Windows 10系统清理终极指南 【免费下载链接】OneDrive-Uninstaller Batch script to completely uninstall OneDrive in Windows 10 项目地址: https://gitcode.com/gh_mirrors/on/OneDrive-Uninstaller OneDrive卸载工具是专为Windo…...

如何高效管理学术笔记:Zotero插件的完整指南与知识图谱构建技巧

如何高效管理学术笔记&#xff1a;Zotero插件的完整指南与知识图谱构建技巧 【免费下载链接】zotero-better-notes Everything about note management. All in Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-better-notes 你是否曾为文献笔记分散、知识难…...

RTS必备系统!Unity高性能战争迷雾技术揭秘(Compute Shader版)

在实时战略&#xff08;RTS&#xff09;游戏中&#xff0c;“战争迷雾”&#xff08;Fog of War&#xff09;几乎是标配机制。从《星际争霸》到《魔兽争霸》&#xff0c;这一系统不仅增强了策略深度&#xff0c;还极大提升了游戏的探索性与信息博弈体验。本文将围绕 Fog Of War…...

Phi-3.5-Mini-Instruct行业落地:金融合规文案初稿生成与风险提示辅助

Phi-3.5-Mini-Instruct行业落地&#xff1a;金融合规文案初稿生成与风险提示辅助 1. 金融合规文案的痛点与挑战 金融行业的合规文案撰写是一项既专业又繁琐的工作。合规专员每天需要处理大量监管文件、风险提示函、合规声明等文档&#xff0c;这些文档不仅要求内容准确严谨&a…...

从SQLite到ObjectBox:聊聊Soul这类社交App的数据库迁移与我们的数据备份困境

从SQLite到ObjectBox&#xff1a;社交App数据库迁移背后的数据主权博弈 深夜刷着手机&#xff0c;突然发现陪伴自己三年的Soul聊天记录无法像从前那样轻松导出了——这不是个例。当社交平台将底层数据库从SQLite悄然切换为ObjectBox时&#xff0c;技术升级的齿轮正碾过普通用户…...

别再为STM32显示中文发愁了!手把手教你用W25Q64外挂字库(附完整代码)

STM32外挂字库实战&#xff1a;W25Q64存储与动态加载全解析 在嵌入式设备开发中&#xff0c;中文显示一直是困扰工程师的难题。当使用STM32F103C8T6这类Flash仅有64KB的微控制器时&#xff0c;内置完整中文字库几乎不可能。本文将深入探讨如何利用SPI Flash芯片W25Q64构建外挂字…...