userver: userver/server/server.hpp Source File
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
server.hpp
1#pragma once
2
3#include <userver/formats/json/value.hpp>
4
5#include <userver/components/component_context.hpp>
6#include <userver/engine/task/task_processor_fwd.hpp>
7#include <userver/server/congestion_control/limiter.hpp>
8#include <userver/server/handlers/fallback_handlers.hpp>
9#include <userver/server/handlers/http_handler_base.hpp>
10#include <userver/storages/secdist/component.hpp>
11#include <userver/utils/statistics/fwd.hpp>
12
13USERVER_NAMESPACE_BEGIN
14
15namespace server {
16
17namespace net {
18struct Stats;
19}
20
21namespace http {
22class HttpRequestHandler;
23}
24
25class RequestsView;
26
27class ServerImpl;
28struct ServerConfig;
29
30class Server final : public congestion_control::Limitee {
31 public:
32 Server(ServerConfig config, const storages::secdist::SecdistConfig& secdist,
33 const components::ComponentContext& component_context);
34 ~Server();
35
36 const ServerConfig& GetConfig() const;
37
38 void WriteMonitorData(utils::statistics::Writer& writer) const;
39
40 void WriteTotalHandlerStatistics(utils::statistics::Writer& writer) const;
41
42 net::Stats GetServerStats() const;
43
44 void AddHandler(const handlers::HttpHandlerBase& handler,
45 engine::TaskProcessor& task_processor);
46
47 size_t GetThrottlableHandlersCount() const;
48
49 const http::HttpRequestHandler& GetHttpRequestHandler(
50 bool is_monitor = false) const;
51
52 void Start();
53
54 void Stop();
55
56 RequestsView& GetRequestsView();
57
58 void SetLimit(std::optional<size_t> new_limit) override;
59
60 void SetRpsRatelimit(std::optional<size_t> rps);
61
62 void SetRpsRatelimitStatusCode(http::HttpStatus status_code);
63
64 private:
65 std::unique_ptr<ServerImpl> pimpl;
66};
67
68} // namespace server
69
70USERVER_NAMESPACE_END