База для асинхронного сервера

This commit is contained in:
2023-09-13 15:20:40 +03:00
parent 61eb4ac0ba
commit f6bfe82e93
11 changed files with 255 additions and 0 deletions

8
src/http_server.cpp Normal file
View File

@ -0,0 +1,8 @@
#include "http_server.h"
#include <boost/asio/dispatch.hpp>
#include <iostream>
namespace http_server
{
}

21
src/http_server.h Normal file
View File

@ -0,0 +1,21 @@
#pragma once
#include "sdk.h"
// boost.beast будет использовать std::string_view вместо boost::string_view
#define BOOST_BEAST_USE_STD_STRING_VIEW
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/strand.hpp>
#include <boost/beast/core.hpp>
#include <boost/beast/http.hpp>
#include "listener.h"
#include "session.h"
namespace http_server
{
template<typename RequestHandler>
void ServeHttp(net::io_context& ioc, const tcp::endpoint& endpoint, RequestHandler&& handler)
{
// Напишите недостающий код, используя информацию из урока
}
}

8
src/listener.cpp Normal file
View File

@ -0,0 +1,8 @@
#include "http_server.h"
#include <boost/asio/dispatch.hpp>
#include <iostream>
namespace http_server
{
} // namespace http_server

23
src/listener.h Normal file
View File

@ -0,0 +1,23 @@
#pragma once
#include "sdk.h"
// boost.beast будет использовать std::string_view вместо boost::string_view
#define BOOST_BEAST_USE_STD_STRING_VIEW
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/strand.hpp>
#include <boost/beast/core.hpp>
#include <boost/beast/http.hpp>
namespace http_server
{
namespace net = boost::asio;
using tcp = net::ip::tcp;
namespace beast = boost::beast;
namespace http = beast::http;
template<typename RequestHandler>
class Listener : public std::enable_shared_from_this<Listener<RequestHandler>>
{
// Напишите недостающий код, используя информацию из урока
};
} // namespace http_server

4
src/sdk.h Normal file
View File

@ -0,0 +1,4 @@
#pragma once
#ifdef WIN32
#include <sdkddkver.h>
#endif

8
src/session.cpp Normal file
View File

@ -0,0 +1,8 @@
#include "http_server.h"
#include <boost/asio/dispatch.hpp>
#include <iostream>
namespace http_server
{
} // namespace http_server

24
src/session.h Normal file
View File

@ -0,0 +1,24 @@
#pragma once
#include "sdk.h"
// boost.beast будет использовать std::string_view вместо boost::string_view
#define BOOST_BEAST_USE_STD_STRING_VIEW
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/strand.hpp>
#include <boost/beast/core.hpp>
#include <boost/beast/http.hpp>
#include "session_base.h"
namespace http_server {
namespace net = boost::asio;
using tcp = net::ip::tcp;
namespace beast = boost::beast;
namespace http = beast::http;
template <typename RequestHandler>
class Session : public SessionBase, public std::enable_shared_from_this<Session<RequestHandler>> {
// Напишите недостающий код, используя информацию из урока
};
} // namespace http_server

8
src/session_base.cpp Normal file
View File

@ -0,0 +1,8 @@
#include "http_server.h"
#include <boost/asio/dispatch.hpp>
#include <iostream>
namespace http_server
{
} // namespace http_server

20
src/session_base.h Normal file
View File

@ -0,0 +1,20 @@
#pragma once
#include "sdk.h"
// boost.beast будет использовать std::string_view вместо boost::string_view
#define BOOST_BEAST_USE_STD_STRING_VIEW
#include <boost/asio/ip/tcp.hpp>
#include <boost/asio/strand.hpp>
#include <boost/beast/core.hpp>
#include <boost/beast/http.hpp>
namespace http_server {
namespace net = boost::asio;
using tcp = net::ip::tcp;
namespace beast = boost::beast;
namespace http = beast::http;
class SessionBase {
// Напишите недостающий код, используя информацию из урока
};
} // namespace http_server