Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
BoostAsioExecutor.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef SF_BOOST_ASIO_EXECUTOR_H
7#define SF_BOOST_ASIO_EXECUTOR_H
8
10
11#include <boost/asio/io_context.hpp>
12#include <boost/asio/post.hpp>
13
14#include <cstddef>
15#include <memory>
16#include <utility>
17
18namespace Skyfire
19{
20namespace Asio
21{
23 {
24 public:
25 boost::asio::io_context& GetIoContext() { return _ioContext; }
26
27 void Restart()
28 {
29 _ioContext.restart();
30 }
31
36
37 void ResetWork()
38 {
40 }
41
42 void Stop()
43 {
44 _ioContext.stop();
45 }
46
47 std::size_t Run()
48 {
49 return _ioContext.run();
50 }
51
52 template<class Handler>
53 void Post(Handler&& handler)
54 {
55 boost::asio::post(_ioContext, std::forward<Handler>(handler));
56 }
57
58 private:
59 boost::asio::io_context _ioContext;
60 std::unique_ptr<IoContextWorkGuard> _workGuard;
61 };
62}
63}
64
65#endif
boost::asio::io_context _ioContext
boost::asio::io_context & GetIoContext()
std::unique_ptr< IoContextWorkGuard > _workGuard
void ResetWorkGuard(std::unique_ptr< IoContextWorkGuard > &workGuard)
std::unique_ptr< IoContextWorkGuard > MakeIoContextWorkGuard(boost::asio::io_context &ioContext)