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.pswp.cn/web/70393.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70393.shtml
英文地址,請注明出處:http://en.pswp.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 的特定內存段。以下是詳細解釋: …