OpenBMC:BmcWeb实例化App

BmcWeb是OpenBMC的一个核心模块,对外负责响应Redfish请求,并且由于OpenBMC的Web使用的Redfish api,所以BmcWeb也是Web的后台。

1.main函数

//src\webserver_main.cpp
#include "webserver_run.hpp"int main(int /*argc*/, char** /*argv*/) noexcept(false)
{return run();
}

2.main函数调用的run函数

//src\webserver_run.cppint run()
{boost::asio::io_context& io = getIoContext();App app;...
}
//include\io_context_singleton.hppinline boost::asio::io_context& getIoContext()
{static boost::asio::io_context io;return io;
}

这里getIoContext相当于一个单例模式,用于产生一个io对象

然后实例化app对象

 3.App类

//http\app.hpp
namespace crow
{
class App
{public:using raw_socket_t = boost::asio::ip::tcp::socket;using server_type = Server<App, raw_socket_t>;...std::optional<server_type> server;};
} // namespace crow
using App = crow::App;

 App这个类里面有一optional<server_type>类型的对象server

在实例化app对象时,目前还没有真正的实例化serrver对象

 4.Server类

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

Server类是个模版类,类的实例化传入了App和boost::asio::ip::tcp::socket两个模版参数

其中App类作为Handler的模版实参,用于定义一个反向指回App类的handler类指针

构造函数的std::vector<Acceptor>&& acceptorsIn参数后续再进行解释

signals设置了进程响应的几个信号

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

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

相关文章

利用AI优化可再生能源管理:Python让绿色能源更高效

利用AI优化可再生能源管理&#xff1a;Python让绿色能源更高效 引言 在全球气候变化和能源危机的背景下&#xff0c;可再生能源的利用变得尤为重要。然而&#xff0c;可再生能源的管理和优化面临诸多挑战&#xff0c;如能源生产的不稳定性和能源需求的波动性。幸运的是&#…

改BUG:Mock测试的时候,when失效

问题再现&#xff1a; 这里我写了一测试用户注册接口的测试类&#xff0c;并通过when模拟下层的服务&#xff0c;但实际上when并没有奏效&#xff0c;还是走了真实的service层的逻辑。 package cn.ac.evo.review.test;import cn.ac.evo.review.user.UserMainApplication; imp…

单片机 code RO-data RW-data ZI-data以及OTA学习

带着问题去学习&#xff1a;这些数据是什么&#xff1f;分别放在哪里&#xff0c; 是什么&#xff1a;我个人的理解 code 和RO-data 分别是代码和只读数据&#xff0c;RW-data以及ZI-data分别是读写数据和初始化数据。 codeRO-data的大小正好是所占用ROM的大小&#xff0c;RO…

什么是LoRA微调

LoRA是大模型微调方法的一种&#xff0c;它的特点是只在模型的 部分权重&#xff08;如 QKV 矩阵&#xff09; 上 添加可训练参数 通过 低秩矩阵&#xff08;AB&#xff09; 来优化参数更新 优点&#xff1a; 极大降低显存消耗&#xff08;deepseek 7B 只需 10GB&#xff09; 适…

EasyRTC低延迟通信与智能处理:论嵌入式WebRTC与AI大模型的技术融合

在当今数字化时代&#xff0c;实时通信的需求日益增长&#xff0c;视频通话作为一种高效、直观的沟通方式&#xff0c;广泛应用于各个领域。WebRTC技术的出现&#xff0c;为实现浏览器之间的实时音视频通信提供了便捷的解决方案。而基于WebRTC技术的EasyRTC视频通话SDK&#xf…

10、k8s对外服务之ingress

service和ingress的作用 service的作用 NodePort&#xff1a;会在每个节点开放一个端口&#xff0c;端口号30000-32767。 也是只能用于内网访问&#xff0c;四层转发。实现负载均衡。不能基于域名进行访问。 clusterip&#xff1a;service的默认类型&#xff0c;只能在集群…

Java数据结构---栈

目录 一、栈的概念 二、栈的基本方法 三、栈的模拟实现 四、栈的练习 1、括号匹配 2、出栈入栈次序匹配 一、栈的概念 栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底…

从CNN到Transformer:遥感影像目标检测的未来趋势

文章目录 前言专题一、深度卷积网络知识专题二、PyTorch应用与实践&#xff08;遥感图像场景分类&#xff09;专题三、卷积神经网络实践与遥感影像目标检测专题四、卷积神经网络的遥感影像目标检测任务案例【FasterRCNN】专题五、Transformer与遥感影像目标检测专题六、Transfo…

php-fpm

摘要 php-fpm(fastcgi process manager)是PHP 的FastCGI管理器&#xff0c;管理PHP的FastCGI进程&#xff0c;提升PHP应用的性能和稳定性 php-fpm是一个高性能的php FastCGI管理器&#xff0c;提供了更好的php进程管理方式&#xff0c;可以有效的控制内存和进程&#xff0c;支…

Python strip() 方法详解:用途、应用场景及示例解析(中英双语)

Python strip() 方法详解&#xff1a;用途、应用场景及示例解析 在 Python 处理字符串时&#xff0c;经常会遇到字符串前后存在多余的空格或特殊字符的问题。strip() 方法就是 Python 提供的一个强大工具&#xff0c;专门用于去除字符串两端的指定字符。本文将详细介绍 strip(…

open webui 部署 以及解决,首屏加载缓慢,nginx反向代理访问404,WebSocket后端服务器链接失败等问题

项目地址&#xff1a;GitHub - open-webui/open-webui: User-friendly AI Interface (Supports Ollama, OpenAI API, ...) 选择了docker部署 如果 Ollama 在您的计算机上&#xff0c;请使用以下命令 docker run -d -p 3000:8080 --add-hosthost.docker.internal:host-gatewa…

docker安装ros2 并在windows中显示docker内ubuntu系统窗口并且vscode编程

这里包括docker desktop安装ros2 humble hawkshill , 安装xserver(用来在windows中显示ubuntu中窗口), vscode安装插件连接docker并配置python的一系列方法 1.安装xserver 为了能方便的在windows中显示ubuntu内的窗口,比如rqt窗口 参考文章:https://www.cnblogs.com/larva-zhh…

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

C/C++ 中 volatile 关键字详解

volatile 关键字是一种类型修饰符&#xff0c;用它声明的类型变量表示可以被某些编译器未知的因素更改&#xff0c;比如&#xff1a;操作系统、硬件或者其它线程等。遇到这个关键字声明的变量&#xff0c;编译器对访问该变量的代码就不再进行优化&#xff0c;从而可以提供对特殊…

处理器架构、单片机、芯片、光刻机之间的关系

这些术语都涉及到半导体和电子设备的设计与制造&#xff0c;但它们的含义和作用有所不同。下面我会逐个解释&#xff0c;并描述它们之间的关系&#xff1a; 1. 处理器架构 (Processor Architecture) 处理器架构指的是处理器&#xff08;CPU&#xff09;的设计原理和结构。它定…

python之socket编程

Socket编程是计算机网络编程的基础&#xff0c;它允许两台计算机&#xff08;或同一个计算机的不同进程&#xff09;之间进行通信。Python 提供了 socket 模块&#xff0c;可以很方便地进行 Socket 编程。下面是一些基本的 Socket 编程示例&#xff0c;包括 TCP 和 UDP。 TCP …

Docker 的安全配置与优化(二)

Docker 安全优化策略 &#xff08;一&#xff09;多阶段构建优化镜像大小 多阶段构建是 Docker 17.05 版本引入的强大功能&#xff0c;它允许在一个 Dockerfile 中定义多个构建阶段&#xff0c;每个阶段都可以使用不同的基础镜像和依赖项&#xff0c;最终只将必要的文件和依赖…

欧洲跨境组网专线:企业出海的高效网络解决方案

在全球化的背景下&#xff0c;越来越多的企业将业务拓展至海外市场&#xff0c;并在欧洲等地设立分支机构。然而&#xff0c;跨境办公中常常面临公网网络延迟高、打开速度慢、丢包严重等问题&#xff0c;这不仅影响办公效率&#xff0c;还增加了IT维护的难度和成本。针对这一痛…

面阵工业相机提高餐饮业生产效率

餐饮行业是一个快节奏、高要求的领域&#xff0c;该领域对生产过程中每一个阶段的效率和准确性都有很高的要求。在食品加工、包装、质量控制和库存管理等不同生产阶段实现生产效率的优化是取得成功的关键步骤。面阵工业相机能够一次性捕捉对象的二维区域图像&#xff0c;并支持…

Renesas RH850 IAR编译时变量分配特定内存

文章目录 1. 核心作用2. 典型使用场景3. 示例代码4. 编译器与链接脚本协作5. 注意事项6. 调试验证在RH850系列微控制器的开发中,#pragma location = "FIRST_RAM" 是一条编译器指令,其核心含义是 将变量或函数分配到名为 FIRST_RAM 的特定内存段。以下是详细解释: …