mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-22 12:45:52 +00:00
rebase server
This commit is contained in:
@@ -67,7 +67,6 @@ include(Postgres)
|
|||||||
|
|
||||||
|
|
||||||
target_sources(reporting PRIVATE
|
target_sources(reporting PRIVATE
|
||||||
<<<<<<< HEAD
|
|
||||||
backend/CassandraBackend.cpp
|
backend/CassandraBackend.cpp
|
||||||
backend/PostgresBackend.cpp
|
backend/PostgresBackend.cpp
|
||||||
backend/BackendIndexer.cpp
|
backend/BackendIndexer.cpp
|
||||||
@@ -78,17 +77,6 @@ target_sources(reporting PRIVATE
|
|||||||
etl/ReportingETL.cpp
|
etl/ReportingETL.cpp
|
||||||
server/session.cpp
|
server/session.cpp
|
||||||
server/SubscriptionManager.cpp
|
server/SubscriptionManager.cpp
|
||||||
=======
|
|
||||||
reporting/ETLSource.cpp
|
|
||||||
reporting/CassandraBackend.cpp
|
|
||||||
reporting/PostgresBackend.cpp
|
|
||||||
reporting/BackendIndexer.cpp
|
|
||||||
reporting/Pg.cpp
|
|
||||||
reporting/DBHelpers.cpp
|
|
||||||
reporting/ReportingETL.cpp
|
|
||||||
reporting/server/Handlers.cpp
|
|
||||||
reporting/server/SubscriptionManager.cpp
|
|
||||||
>>>>>>> 27506bc (rebase handlers)
|
|
||||||
handlers/AccountInfo.cpp
|
handlers/AccountInfo.cpp
|
||||||
handlers/Tx.cpp
|
handlers/Tx.cpp
|
||||||
handlers/RPCHelpers.cpp
|
handlers/RPCHelpers.cpp
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
#include <boost/json.hpp>
|
#include <boost/json.hpp>
|
||||||
<<<<<<< HEAD
|
|
||||||
=======
|
|
||||||
#include <reporting/server/WsSession.h>
|
|
||||||
#include <reporting/server/SubscriptionManager.h>
|
|
||||||
>>>>>>> 27506bc (rebase handlers)
|
|
||||||
#include <handlers/RPCHelpers.h>
|
#include <handlers/RPCHelpers.h>
|
||||||
#include <server/session.h>
|
#include <server/session.h>
|
||||||
|
|
||||||
|
|||||||
@@ -118,13 +118,24 @@ handle_request(
|
|||||||
{
|
{
|
||||||
auto request = boost::json::parse(req.body()).as_object();
|
auto request = boost::json::parse(req.body()).as_object();
|
||||||
|
|
||||||
auto response = buildResponse(request, etl, nullptr);
|
boost::json::object builtResponse;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
builtResponse = buildResponse(request, etl, nullptr);
|
||||||
|
}
|
||||||
|
catch (std::exception const& e)
|
||||||
|
{
|
||||||
|
return send(response(
|
||||||
|
http::status::internal_server_error,
|
||||||
|
"text/html",
|
||||||
|
"Internal Error"
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
return send(response(
|
return send(response(
|
||||||
http::status::ok,
|
http::status::ok,
|
||||||
"application/json",
|
"application/json",
|
||||||
boost::json::serialize(response)
|
boost::json::serialize(builtResponse)));
|
||||||
));
|
|
||||||
}
|
}
|
||||||
catch (std::exception const& e)
|
catch (std::exception const& e)
|
||||||
{
|
{
|
||||||
@@ -140,8 +151,6 @@ handle_request(
|
|||||||
// Handles an HTTP server connection
|
// Handles an HTTP server connection
|
||||||
class HttpSession : public std::enable_shared_from_this<HttpSession>
|
class HttpSession : public std::enable_shared_from_this<HttpSession>
|
||||||
{
|
{
|
||||||
// This is the C++11 equivalent of a generic lambda.
|
|
||||||
// The function object is used to send an HTTP message.
|
|
||||||
struct send_lambda
|
struct send_lambda
|
||||||
{
|
{
|
||||||
HttpSession& self_;
|
HttpSession& self_;
|
||||||
|
|||||||
124
reporting/server/SslCerts.h
Normal file
124
reporting/server/SslCerts.h
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
//
|
||||||
|
// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
|
||||||
|
//
|
||||||
|
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
|
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
// Official repository: https://github.com/boostorg/beast
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef BOOST_BEAST_EXAMPLE_COMMON_SERVER_CERTIFICATE_HPP
|
||||||
|
#define BOOST_BEAST_EXAMPLE_COMMON_SERVER_CERTIFICATE_HPP
|
||||||
|
|
||||||
|
#include <boost/asio/buffer.hpp>
|
||||||
|
#include <boost/asio/ssl/context.hpp>
|
||||||
|
#include <cstddef>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
/* Load a signed certificate into the ssl context, and configure
|
||||||
|
the context for use with a server.
|
||||||
|
|
||||||
|
For this to work with the browser or operating system, it is
|
||||||
|
necessary to import the "Beast Test CA" certificate into
|
||||||
|
the local certificate store, browser, or operating system
|
||||||
|
depending on your environment Please see the documentation
|
||||||
|
accompanying the Beast certificate for more details.
|
||||||
|
*/
|
||||||
|
inline
|
||||||
|
void
|
||||||
|
load_server_certificate(boost::asio::ssl::context& ctx)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
The certificate was generated from CMD.EXE on Windows 10 using:
|
||||||
|
|
||||||
|
winpty openssl dhparam -out dh.pem 2048
|
||||||
|
winpty openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 10000 -out cert.pem -subj "//C=US\ST=CA\L=Los Angeles\O=Beast\CN=www.example.com"
|
||||||
|
*/
|
||||||
|
|
||||||
|
std::string const cert =
|
||||||
|
"-----BEGIN CERTIFICATE-----\n"
|
||||||
|
"MIIDaDCCAlCgAwIBAgIJAO8vBu8i8exWMA0GCSqGSIb3DQEBCwUAMEkxCzAJBgNV\n"
|
||||||
|
"BAYTAlVTMQswCQYDVQQIDAJDQTEtMCsGA1UEBwwkTG9zIEFuZ2VsZXNPPUJlYXN0\n"
|
||||||
|
"Q049d3d3LmV4YW1wbGUuY29tMB4XDTE3MDUwMzE4MzkxMloXDTQ0MDkxODE4Mzkx\n"
|
||||||
|
"MlowSTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMS0wKwYDVQQHDCRMb3MgQW5n\n"
|
||||||
|
"ZWxlc089QmVhc3RDTj13d3cuZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUA\n"
|
||||||
|
"A4IBDwAwggEKAoIBAQDJ7BRKFO8fqmsEXw8v9YOVXyrQVsVbjSSGEs4Vzs4cJgcF\n"
|
||||||
|
"xqGitbnLIrOgiJpRAPLy5MNcAXE1strVGfdEf7xMYSZ/4wOrxUyVw/Ltgsft8m7b\n"
|
||||||
|
"Fu8TsCzO6XrxpnVtWk506YZ7ToTa5UjHfBi2+pWTxbpN12UhiZNUcrRsqTFW+6fO\n"
|
||||||
|
"9d7xm5wlaZG8cMdg0cO1bhkz45JSl3wWKIES7t3EfKePZbNlQ5hPy7Pd5JTmdGBp\n"
|
||||||
|
"yY8anC8u4LPbmgW0/U31PH0rRVfGcBbZsAoQw5Tc5dnb6N2GEIbq3ehSfdDHGnrv\n"
|
||||||
|
"enu2tOK9Qx6GEzXh3sekZkxcgh+NlIxCNxu//Dk9AgMBAAGjUzBRMB0GA1UdDgQW\n"
|
||||||
|
"BBTZh0N9Ne1OD7GBGJYz4PNESHuXezAfBgNVHSMEGDAWgBTZh0N9Ne1OD7GBGJYz\n"
|
||||||
|
"4PNESHuXezAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCmTJVT\n"
|
||||||
|
"LH5Cru1vXtzb3N9dyolcVH82xFVwPewArchgq+CEkajOU9bnzCqvhM4CryBb4cUs\n"
|
||||||
|
"gqXWp85hAh55uBOqXb2yyESEleMCJEiVTwm/m26FdONvEGptsiCmF5Gxi0YRtn8N\n"
|
||||||
|
"V+KhrQaAyLrLdPYI7TrwAOisq2I1cD0mt+xgwuv/654Rl3IhOMx+fKWKJ9qLAiaE\n"
|
||||||
|
"fQyshjlPP9mYVxWOxqctUdQ8UnsUKKGEUcVrA08i1OAnVKlPFjKBvk+r7jpsTPcr\n"
|
||||||
|
"9pWXTO9JrYMML7d+XRSZA1n3856OqZDX4403+9FnXCvfcLZLLKTBvwwFgEFGpzjK\n"
|
||||||
|
"UEVbkhd5qstF6qWK\n"
|
||||||
|
"-----END CERTIFICATE-----\n";
|
||||||
|
|
||||||
|
std::string const key =
|
||||||
|
"-----BEGIN PRIVATE KEY-----\n"
|
||||||
|
"MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJ7BRKFO8fqmsE\n"
|
||||||
|
"Xw8v9YOVXyrQVsVbjSSGEs4Vzs4cJgcFxqGitbnLIrOgiJpRAPLy5MNcAXE1strV\n"
|
||||||
|
"GfdEf7xMYSZ/4wOrxUyVw/Ltgsft8m7bFu8TsCzO6XrxpnVtWk506YZ7ToTa5UjH\n"
|
||||||
|
"fBi2+pWTxbpN12UhiZNUcrRsqTFW+6fO9d7xm5wlaZG8cMdg0cO1bhkz45JSl3wW\n"
|
||||||
|
"KIES7t3EfKePZbNlQ5hPy7Pd5JTmdGBpyY8anC8u4LPbmgW0/U31PH0rRVfGcBbZ\n"
|
||||||
|
"sAoQw5Tc5dnb6N2GEIbq3ehSfdDHGnrvenu2tOK9Qx6GEzXh3sekZkxcgh+NlIxC\n"
|
||||||
|
"Nxu//Dk9AgMBAAECggEBAK1gV8uETg4SdfE67f9v/5uyK0DYQH1ro4C7hNiUycTB\n"
|
||||||
|
"oiYDd6YOA4m4MiQVJuuGtRR5+IR3eI1zFRMFSJs4UqYChNwqQGys7CVsKpplQOW+\n"
|
||||||
|
"1BCqkH2HN/Ix5662Dv3mHJemLCKUON77IJKoq0/xuZ04mc9csykox6grFWB3pjXY\n"
|
||||||
|
"OEn9U8pt5KNldWfpfAZ7xu9WfyvthGXlhfwKEetOuHfAQv7FF6s25UIEU6Hmnwp9\n"
|
||||||
|
"VmYp2twfMGdztz/gfFjKOGxf92RG+FMSkyAPq/vhyB7oQWxa+vdBn6BSdsfn27Qs\n"
|
||||||
|
"bTvXrGe4FYcbuw4WkAKTljZX7TUegkXiwFoSps0jegECgYEA7o5AcRTZVUmmSs8W\n"
|
||||||
|
"PUHn89UEuDAMFVk7grG1bg8exLQSpugCykcqXt1WNrqB7x6nB+dbVANWNhSmhgCg\n"
|
||||||
|
"VrV941vbx8ketqZ9YInSbGPWIU/tss3r8Yx2Ct3mQpvpGC6iGHzEc/NHJP8Efvh/\n"
|
||||||
|
"CcUWmLjLGJYYeP5oNu5cncC3fXUCgYEA2LANATm0A6sFVGe3sSLO9un1brA4zlZE\n"
|
||||||
|
"Hjd3KOZnMPt73B426qUOcw5B2wIS8GJsUES0P94pKg83oyzmoUV9vJpJLjHA4qmL\n"
|
||||||
|
"CDAd6CjAmE5ea4dFdZwDDS8F9FntJMdPQJA9vq+JaeS+k7ds3+7oiNe+RUIHR1Sz\n"
|
||||||
|
"VEAKh3Xw66kCgYB7KO/2Mchesu5qku2tZJhHF4QfP5cNcos511uO3bmJ3ln+16uR\n"
|
||||||
|
"GRqz7Vu0V6f7dvzPJM/O2QYqV5D9f9dHzN2YgvU9+QSlUeFK9PyxPv3vJt/WP1//\n"
|
||||||
|
"zf+nbpaRbwLxnCnNsKSQJFpnrE166/pSZfFbmZQpNlyeIuJU8czZGQTifQKBgHXe\n"
|
||||||
|
"/pQGEZhVNab+bHwdFTxXdDzr+1qyrodJYLaM7uFES9InVXQ6qSuJO+WosSi2QXlA\n"
|
||||||
|
"hlSfwwCwGnHXAPYFWSp5Owm34tbpp0mi8wHQ+UNgjhgsE2qwnTBUvgZ3zHpPORtD\n"
|
||||||
|
"23KZBkTmO40bIEyIJ1IZGdWO32q79nkEBTY+v/lRAoGBAI1rbouFYPBrTYQ9kcjt\n"
|
||||||
|
"1yfu4JF5MvO9JrHQ9tOwkqDmNCWx9xWXbgydsn/eFtuUMULWsG3lNjfst/Esb8ch\n"
|
||||||
|
"k5cZd6pdJZa4/vhEwrYYSuEjMCnRb0lUsm7TsHxQrUd6Fi/mUuFU/haC0o0chLq7\n"
|
||||||
|
"pVOUFq5mW8p0zbtfHbjkgxyF\n"
|
||||||
|
"-----END PRIVATE KEY-----\n";
|
||||||
|
|
||||||
|
std::string const dh =
|
||||||
|
"-----BEGIN DH PARAMETERS-----\n"
|
||||||
|
"MIIBCAKCAQEArzQc5mpm0Fs8yahDeySj31JZlwEphUdZ9StM2D8+Fo7TMduGtSi+\n"
|
||||||
|
"/HRWVwHcTFAgrxVdm+dl474mOUqqaz4MpzIb6+6OVfWHbQJmXPepZKyu4LgUPvY/\n"
|
||||||
|
"4q3/iDMjIS0fLOu/bLuObwU5ccZmDgfhmz1GanRlTQOiYRty3FiOATWZBRh6uv4u\n"
|
||||||
|
"tff4A9Bm3V9tLx9S6djq31w31Gl7OQhryodW28kc16t9TvO1BzcV3HjRPwpe701X\n"
|
||||||
|
"oEEZdnZWANkkpR/m/pfgdmGPU66S2sXMHgsliViQWpDCYeehrvFRHEdR9NV+XJfC\n"
|
||||||
|
"QMUk26jPTIVTLfXmmwU0u8vUkpR7LQKkwwIBAg==\n"
|
||||||
|
"-----END DH PARAMETERS-----\n";
|
||||||
|
|
||||||
|
ctx.set_password_callback(
|
||||||
|
[](std::size_t,
|
||||||
|
boost::asio::ssl::context_base::password_purpose)
|
||||||
|
{
|
||||||
|
return "test";
|
||||||
|
});
|
||||||
|
|
||||||
|
ctx.set_options(
|
||||||
|
boost::asio::ssl::context::default_workarounds |
|
||||||
|
boost::asio::ssl::context::no_sslv2 |
|
||||||
|
boost::asio::ssl::context::single_dh_use);
|
||||||
|
|
||||||
|
ctx.use_certificate_chain(
|
||||||
|
boost::asio::buffer(cert.data(), cert.size()));
|
||||||
|
|
||||||
|
ctx.use_private_key(
|
||||||
|
boost::asio::buffer(key.data(), key.size()),
|
||||||
|
boost::asio::ssl::context::file_format::pem);
|
||||||
|
|
||||||
|
ctx.use_tmp_dh(
|
||||||
|
boost::asio::buffer(dh.data(), dh.size()));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -23,6 +23,8 @@
|
|||||||
#include <boost/asio/dispatch.hpp>
|
#include <boost/asio/dispatch.hpp>
|
||||||
#include <boost/beast/core.hpp>
|
#include <boost/beast/core.hpp>
|
||||||
#include <boost/beast/websocket.hpp>
|
#include <boost/beast/websocket.hpp>
|
||||||
|
#include <boost/beast/ssl.hpp>
|
||||||
|
#include <boost/beast/websocket/ssl.hpp>
|
||||||
|
|
||||||
#include <backend/BackendInterface.h>
|
#include <backend/BackendInterface.h>
|
||||||
#include <etl/ETLSource.h>
|
#include <etl/ETLSource.h>
|
||||||
@@ -169,7 +171,8 @@ fail(boost::beast::error_code ec, char const* what);
|
|||||||
// Echoes back all received WebSocket messages
|
// Echoes back all received WebSocket messages
|
||||||
class WsSession : public std::enable_shared_from_this<WsSession>
|
class WsSession : public std::enable_shared_from_this<WsSession>
|
||||||
{
|
{
|
||||||
boost::beast::websocket::stream<boost::beast::tcp_stream> ws_;
|
boost::beast::websocket::stream<
|
||||||
|
boost::beast::ssl_stream<boost::beast::tcp_stream>> ws_;
|
||||||
boost::beast::flat_buffer buffer_;
|
boost::beast::flat_buffer buffer_;
|
||||||
std::string response_;
|
std::string response_;
|
||||||
|
|
||||||
@@ -252,21 +255,45 @@ private:
|
|||||||
void
|
void
|
||||||
on_run()
|
on_run()
|
||||||
{
|
{
|
||||||
|
boost::beast::get_lowest_layer(ws_).expires_after(std::chrono::seconds(30));
|
||||||
|
|
||||||
|
// Perform the SSL handshake
|
||||||
|
ws_.next_layer().async_handshake(
|
||||||
|
ssl::stream_base::server,
|
||||||
|
boost::beast::bind_front_handler(
|
||||||
|
&WsSession::on_handshake,
|
||||||
|
shared_from_this()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
on_handshake(boost::beast::error_code ec)
|
||||||
|
{
|
||||||
|
if(ec)
|
||||||
|
return wsFail(ec, "handshake");
|
||||||
|
|
||||||
|
// Turn off the timeout on the tcp_stream, because
|
||||||
|
// the websocket stream has its own timeout system.
|
||||||
|
boost::beast::get_lowest_layer(ws_).expires_never();
|
||||||
|
|
||||||
// Set suggested timeout settings for the websocket
|
// Set suggested timeout settings for the websocket
|
||||||
ws_.set_option(boost::beast::websocket::stream_base::timeout::suggested(
|
ws_.set_option(
|
||||||
boost::beast::role_type::server));
|
boost::beast::websocket::stream_base::timeout::suggested(
|
||||||
|
boost::beast::role_type::server));
|
||||||
|
|
||||||
// Set a decorator to change the Server of the handshake
|
// Set a decorator to change the Server of the handshake
|
||||||
ws_.set_option(boost::beast::websocket::stream_base::decorator(
|
ws_.set_option(boost::beast::websocket::stream_base::decorator(
|
||||||
[](boost::beast::websocket::response_type& res) {
|
[](boost::beast::websocket::response_type& res)
|
||||||
res.set(
|
{
|
||||||
boost::beast::http::field::server,
|
res.set(http::field::server,
|
||||||
std::string(BOOST_BEAST_VERSION_STRING) +
|
std::string(BOOST_BEAST_VERSION_STRING) +
|
||||||
" websocket-server-async");
|
" websocket-server-async-ssl");
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Accept the websocket handshake
|
// Accept the websocket handshake
|
||||||
ws_.async_accept(boost::beast::bind_front_handler(
|
ws_.async_accept(
|
||||||
&WsSession::on_accept, shared_from_this()));
|
boost::beast::bind_front_handler(
|
||||||
|
&WsSession::on_accept,
|
||||||
|
shared_from_this()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -20,16 +20,10 @@
|
|||||||
#ifndef SUBSCRIPTION_MANAGER_H
|
#ifndef SUBSCRIPTION_MANAGER_H
|
||||||
#define SUBSCRIPTION_MANAGER_H
|
#define SUBSCRIPTION_MANAGER_H
|
||||||
|
|
||||||
<<<<<<< HEAD:server/SubscriptionManager.h
|
|
||||||
#include <server/session.h>
|
#include <server/session.h>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <set>
|
#include <set>
|
||||||
=======
|
|
||||||
#include <set>
|
|
||||||
#include <memory>
|
|
||||||
#include <reporting/server/WsSession.h>
|
|
||||||
>>>>>>> 27506bc (rebase handlers):reporting/server/SubscriptionManager.h
|
|
||||||
|
|
||||||
class WsSession;
|
class WsSession;
|
||||||
|
|
||||||
@@ -105,17 +99,10 @@ public:
|
|||||||
std::shared_ptr<session>& session);
|
std::shared_ptr<session>& session);
|
||||||
|
|
||||||
void
|
void
|
||||||
<<<<<<< HEAD:server/SubscriptionManager.h
|
|
||||||
subProposedTransactions(std::shared_ptr<session>& session);
|
subProposedTransactions(std::shared_ptr<session>& session);
|
||||||
|
|
||||||
void
|
void
|
||||||
unsubProposedTransactions(std::shared_ptr<session>& session);
|
unsubProposedTransactions(std::shared_ptr<session>& session);
|
||||||
=======
|
|
||||||
subAccount(ripple::AccountID const& account, std::shared_ptr<WsSession>& session);
|
|
||||||
|
|
||||||
void
|
|
||||||
unsubAccount(ripple::AccountID const& account, std::shared_ptr<WsSession>& session);
|
|
||||||
>>>>>>> 27506bc (rebase handlers):reporting/server/SubscriptionManager.h
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SUBSCRIPTION_MANAGER_H
|
#endif // SUBSCRIPTION_MANAGER_H
|
||||||
|
|||||||
@@ -34,16 +34,15 @@ class SubscriptionManager;
|
|||||||
template <class Session>
|
template <class Session>
|
||||||
class listener : public std::enable_shared_from_this<listener<Session>>
|
class listener : public std::enable_shared_from_this<listener<Session>>
|
||||||
{
|
{
|
||||||
|
using std::enable_shared_from_this<listener<Session>>::shared_from_this;
|
||||||
|
|
||||||
boost::asio::io_context& ioc_;
|
boost::asio::io_context& ioc_;
|
||||||
boost::asio::ip::tcp::acceptor acceptor_;
|
boost::asio::ip::tcp::acceptor acceptor_;
|
||||||
<<<<<<< HEAD:server/listener.h
|
|
||||||
std::shared_ptr<BackendInterface> backend_;
|
std::shared_ptr<BackendInterface> backend_;
|
||||||
std::shared_ptr<SubscriptionManager> subscriptions_;
|
std::shared_ptr<SubscriptionManager> subscriptions_;
|
||||||
std::shared_ptr<ETLLoadBalancer> balancer_;
|
std::shared_ptr<ETLLoadBalancer> balancer_;
|
||||||
DOSGuard& dosGuard_;
|
DOSGuard& dosGuard_;
|
||||||
=======
|
ssl::context& ctx_;
|
||||||
ReportingETL& etl_;
|
|
||||||
>>>>>>> 27506bc (rebase handlers):reporting/server/listener.h
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void
|
static void
|
||||||
@@ -63,7 +62,6 @@ public:
|
|||||||
listener(
|
listener(
|
||||||
boost::asio::io_context& ioc,
|
boost::asio::io_context& ioc,
|
||||||
boost::asio::ip::tcp::endpoint endpoint,
|
boost::asio::ip::tcp::endpoint endpoint,
|
||||||
<<<<<<< HEAD:server/listener.h
|
|
||||||
std::shared_ptr<BackendInterface> backend,
|
std::shared_ptr<BackendInterface> backend,
|
||||||
std::shared_ptr<SubscriptionManager> subscriptions,
|
std::shared_ptr<SubscriptionManager> subscriptions,
|
||||||
std::shared_ptr<ETLLoadBalancer> balancer,
|
std::shared_ptr<ETLLoadBalancer> balancer,
|
||||||
@@ -74,12 +72,6 @@ public:
|
|||||||
, subscriptions_(subscriptions)
|
, subscriptions_(subscriptions)
|
||||||
, balancer_(balancer)
|
, balancer_(balancer)
|
||||||
, dosGuard_(dosGuard)
|
, dosGuard_(dosGuard)
|
||||||
=======
|
|
||||||
ReportingETL& etl)
|
|
||||||
: ioc_(ioc)
|
|
||||||
, acceptor_(ioc)
|
|
||||||
, etl_(etl)
|
|
||||||
>>>>>>> 27506bc (rebase handlers):reporting/server/listener.h
|
|
||||||
{
|
{
|
||||||
boost::beast::error_code ec;
|
boost::beast::error_code ec;
|
||||||
|
|
||||||
@@ -149,17 +141,12 @@ private:
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<<<<<<< HEAD:server/listener.h
|
|
||||||
session::make_session(
|
session::make_session(
|
||||||
std::move(socket),
|
std::move(socket),
|
||||||
backend_,
|
backend_,
|
||||||
subscriptions_,
|
subscriptions_,
|
||||||
balancer_,
|
balancer_,
|
||||||
dosGuard_);
|
dosGuard_);
|
||||||
=======
|
|
||||||
// Create the session and run it
|
|
||||||
std::make_shared<Session>(std::move(socket), etl_)->run();
|
|
||||||
>>>>>>> 27506bc (rebase handlers):reporting/server/listener.h
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Accept another connection
|
// Accept another connection
|
||||||
|
|||||||
@@ -30,15 +30,12 @@
|
|||||||
#include <functional>
|
#include <functional>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
<<<<<<< HEAD:server/websocket_server_async.cpp
|
|
||||||
#include <server/listener.h>
|
#include <server/listener.h>
|
||||||
#include <server/session.h>
|
#include <server/session.h>
|
||||||
=======
|
|
||||||
#include <reporting/ReportingETL.h>
|
#include <reporting/ReportingETL.h>
|
||||||
#include <reporting/server/listener.h>
|
#include <reporting/server/listener.h>
|
||||||
#include <reporting/server/WsSession.h>
|
#include <reporting/server/WsSession.h>
|
||||||
#include <reporting/server/HttpSession.h>
|
#include <reporting/server/HttpSession.h>
|
||||||
>>>>>>> 27506bc (rebase handlers):websocket_server_async.cpp
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
@@ -106,45 +103,12 @@ initLogLevel(int level)
|
|||||||
void
|
void
|
||||||
start(boost::asio::io_context& ioc, std::uint32_t numThreads)
|
start(boost::asio::io_context& ioc, std::uint32_t numThreads)
|
||||||
{
|
{
|
||||||
<<<<<<< HEAD:server/websocket_server_async.cpp
|
|
||||||
std::vector<std::thread> v;
|
std::vector<std::thread> v;
|
||||||
v.reserve(numThreads - 1);
|
v.reserve(numThreads - 1);
|
||||||
for (auto i = numThreads - 1; i > 0; --i)
|
for (auto i = numThreads - 1; i > 0; --i)
|
||||||
v.emplace_back([&ioc] { ioc.run(); });
|
v.emplace_back([&ioc] { ioc.run(); });
|
||||||
|
|
||||||
ioc.run();
|
ioc.run();
|
||||||
=======
|
|
||||||
auto const address =
|
|
||||||
boost::asio::ip::make_address(wsConfig.at("ip").as_string().c_str());
|
|
||||||
auto const port =
|
|
||||||
static_cast<unsigned short>(wsConfig.at("port").as_uint64());
|
|
||||||
|
|
||||||
// Create and launch a listening port
|
|
||||||
std::make_shared<listener<WsSession>>(
|
|
||||||
ioc,
|
|
||||||
boost::asio::ip::tcp::endpoint{address, port},
|
|
||||||
etl)
|
|
||||||
->run();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
openHttpServer(
|
|
||||||
boost::json::object const& httpConfig,
|
|
||||||
boost::asio::io_context& ioc,
|
|
||||||
ReportingETL& etl)
|
|
||||||
{
|
|
||||||
auto const address =
|
|
||||||
boost::asio::ip::make_address(httpConfig.at("ip").as_string().c_str());
|
|
||||||
auto const port =
|
|
||||||
static_cast<unsigned short>(httpConfig.at("port").as_uint64());
|
|
||||||
|
|
||||||
// Create and launch a listening port
|
|
||||||
std::make_shared<listener<HttpSession>>(
|
|
||||||
ioc,
|
|
||||||
boost::asio::ip::tcp::endpoint{address, port},
|
|
||||||
etl)
|
|
||||||
->run();
|
|
||||||
>>>>>>> 27506bc (rebase handlers):websocket_server_async.cpp
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -163,6 +127,7 @@ main(int argc, char* argv[])
|
|||||||
|
|
||||||
auto const threads = std::max<int>(1, std::atoi(argv[1]));
|
auto const threads = std::max<int>(1, std::atoi(argv[1]));
|
||||||
auto const config = parse_config(argv[2]);
|
auto const config = parse_config(argv[2]);
|
||||||
|
|
||||||
if (argc > 5)
|
if (argc > 5)
|
||||||
{
|
{
|
||||||
initLogLevel(std::atoi(argv[5]));
|
initLogLevel(std::atoi(argv[5]));
|
||||||
|
|||||||
Reference in New Issue
Block a user