Github   Telegram
Loading...
Searching...
No Matches
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/handlers/fallback_handlers.hpp>
8#include <userver/server/handlers/http_handler_base.hpp>
9#include <userver/utils/statistics/fwd.hpp>
10
11USERVER_NAMESPACE_BEGIN
12
13namespace server {
14
15namespace net {
16struct Stats;
17}
18
19namespace http {
20class HttpRequestHandler;
21}
22
23class RequestsView;
24
25class ServerImpl;
26struct ServerConfig;
27
28class Server final {
29 public:
30 Server(ServerConfig config,
31 const components::ComponentContext& component_context);
32 ~Server();
33
34 const ServerConfig& GetConfig() const;
35
36 void WriteMonitorData(utils::statistics::Writer& writer) const;
37
38 void WriteTotalHandlerStatistics(utils::statistics::Writer& writer) const;
39
40 net::Stats GetServerStats() const;
41
42 void AddHandler(const handlers::HttpHandlerBase& handler,
43 engine::TaskProcessor& task_processor);
44
45 size_t GetRegisteredHandlersCount() const;
46
47 const http::HttpRequestHandler& GetHttpRequestHandler(
48 bool is_monitor = false) const;
49
50 void Start();
51
52 void Stop();
53
54 RequestsView& GetRequestsView();
55
56 void SetRpsRatelimit(std::optional<size_t> rps);
57
58 void SetRpsRatelimitStatusCode(http::HttpStatus status_code);
59
60 private:
61 std::unique_ptr<ServerImpl> pimpl;
62};
63
64} // namespace server
65
66USERVER_NAMESPACE_END