WebFramework v3.0.12
Web framework for C++.
Loading...
Searching...
No Matches
LoadBalancerServer.h
1#pragma once
2
3#include "Import/WebFrameworkCore.h"
4
5#include "MultiLocalizationManager.h"
6
7#include "WebNetwork/WebServers/BaseWebServer.h"
8#include "Heuristics/BaseLoadBalancerHeuristic.h"
9#include "Executors/ResourceExecutor.h"
10
11#include "Utility/BaseConnectionData.h"
12
13namespace framework
14{
15 namespace load_balancer
16 {
18 {
19 private:
20 struct ServerData
21 {
22 public:
23 utility::BaseConnectionData connectionData;
24 std::unique_ptr<BaseLoadBalancerHeuristic> heuristic;
25
26 public:
27 ServerData(utility::BaseConnectionData&& connectionData, std::unique_ptr<BaseLoadBalancerHeuristic>&& heuristic) noexcept;
28
29 ServerData(const ServerData&) = delete;
30
31 ServerData(ServerData&&) noexcept = default;
32
33 ServerData& operator = (const ServerData&) = delete;
34
35 ServerData& operator = (ServerData&&) noexcept = default;
36
37 ~ServerData() = default;
38 };
39
40 private:
41 std::vector<ServerData> allServers;
42 std::shared_ptr<ResourceExecutor> resources;
43 bool serversHTTPS;
44
45 private:
46 void clientConnection(const std::string& ip, SOCKET clientSocket, sockaddr addr, std::function<void()>& cleanup) override;
47
48 public:
50 (
51 std::string_view ip, std::string_view port, DWORD timeout, bool serversHTTPS,
52 std::string_view heuristicName, const std::vector<HMODULE>& loadSources,
53 const std::unordered_map<std::string, std::vector<int64_t>>& allServers,
54 const json::JSONParser& configuration, const std::filesystem::path& assets, uint64_t cachingSize, const std::filesystem::path& pathToTemplates
55 );
56
57 ~LoadBalancerServer() = default;
58 };
59 }
60}
Contains all data for connection to server.