magpie
Loading...
Searching...
No Matches
TCPServer.hpp
1#pragma once
2
3#include "magpie/application/Http2Adapter.hpp"
4#include "raven/config/SSLConfig.hpp"
5#include <raven/SocketServer.hpp>
6
7#include <cstdint>
8#include <string>
9#include <optional>
10
11namespace magpie { class BaseApp; }
12namespace magpie::transport {
13
14class TCPServer {
15private:
16 unsigned int concurrency;
17 BaseApp* app;
18
19 bool die = false;
20 bool hasSSL = false;
21 raven::SocketServer serv;
22
23 std::optional<raven::SSLConfig>&& injectALPN(
24 std::optional<raven::SSLConfig>&& sslConfig
25 );
26public:
27 TCPServer(
28 BaseApp* app,
29 uint16_t port,
30 unsigned int concurrency,
31 const std::string& bindAddr = "127.0.0.1",
32 std::optional<raven::SSLConfig>&& sslConfig = std::nullopt
33 );
34 ~TCPServer();
35
36 void start();
37 void stop();
38
39 uint16_t getPort();
40
41 void sync() {
42 this->serv.waitForStarted();
43 }
44};
45
46}
Definition AppDecl.hpp:14