userver: userver/server/server.hpp Source File
Loading...
Searching...
No Matches
server.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/server/server.hpp
4/// @brief @copybrief server::Server
5
6#include <userver/formats/json/value.hpp>
7
8#include <userver/components/component_context.hpp>
9#include <userver/engine/deadline.hpp>
10#include <userver/engine/task/task_processor_fwd.hpp>
11#include <userver/server/congestion_control/limiter.hpp>
12#include <userver/server/congestion_control/sensor.hpp>
13#include <userver/server/handlers/fallback_handlers.hpp>
14#include <userver/server/handlers/http_handler_base.hpp>
15#include <userver/storages/secdist/component.hpp>
16#include <userver/utils/resource_scopes.hpp>
17#include <userver/utils/statistics/fwd.hpp>
18
19USERVER_NAMESPACE_BEGIN
20
21namespace server {
22
23namespace net {
24struct StatsAggregation;
25}
26
27namespace http {
28class HttpRequestHandler;
29}
30
31class RequestsView;
32
33class ServerImpl;
34struct ServerConfig;
35
36/// @brief Main HTTP server instance
37class Server final : public congestion_control::Limitee, public congestion_control::RequestsSource {
38public:
39 Server(
40 ServerConfig config,
41 const storages::secdist::SecdistConfig& secdist,
42 const components::ComponentContext& component_context
43 );
44 ~Server() override;
45
46 const ServerConfig& GetConfig() const;
47
48 std::vector<std::string> GetCommonMiddlewares() const;
49
50 void WriteMonitorData(utils::statistics::Writer& writer) const;
51
52 void WriteTotalHandlerStatistics(utils::statistics::Writer& writer) const;
53
54 net::StatsAggregation GetServerStats() const;
55
56 void AddHandler(const handlers::HttpHandlerBase& handler, engine::TaskProcessor& task_processor);
57
58 const http::HttpRequestHandler& GetHttpRequestHandler(bool is_monitor = false) const;
59
60 void StartMonitorPort();
61
62 void Start();
63
64 void StopServing(engine::Deadline serving_shutdown_deadline);
65
66 void Stop();
67
68 RequestsView& GetRequestsView();
69
70 void SetLimit(std::optional<size_t> new_limit) override;
71
72 size_t GetLimitableHandlersCount() const override;
73
74 void SetRpsRatelimit(std::optional<size_t> rps);
75
76 void SetRpsRatelimitStatusCode(http::HttpStatus status_code);
77
78 std::uint64_t GetTotalRequests() const override;
79
80 void WriteMetrics(utils::statistics::Writer& writer) const;
81
82private:
83 std::unique_ptr<ServerImpl> pimpl_;
84};
85
86} // namespace server
87
88USERVER_NAMESPACE_END