Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
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
9
#include "
Threading/BoostAsioWork.h
"
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
18
namespace
Skyfire
19
{
20
namespace
Asio
21
{
22
class
IoContextExecutor
23
{
24
public
:
25
boost::asio::io_context&
GetIoContext
() {
return
_ioContext
; }
26
27
void
Restart
()
28
{
29
_ioContext
.restart();
30
}
31
32
void
KeepAlive
()
33
{
34
_workGuard
=
MakeIoContextWorkGuard
(
_ioContext
);
35
}
36
37
void
ResetWork
()
38
{
39
ResetWorkGuard
(
_workGuard
);
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
BoostAsioWork.h
Skyfire::Asio::IoContextExecutor
Definition
BoostAsioExecutor.h:23
Skyfire::Asio::IoContextExecutor::KeepAlive
void KeepAlive()
Definition
BoostAsioExecutor.h:32
Skyfire::Asio::IoContextExecutor::Post
void Post(Handler &&handler)
Definition
BoostAsioExecutor.h:53
Skyfire::Asio::IoContextExecutor::_ioContext
boost::asio::io_context _ioContext
Definition
BoostAsioExecutor.h:59
Skyfire::Asio::IoContextExecutor::GetIoContext
boost::asio::io_context & GetIoContext()
Definition
BoostAsioExecutor.h:25
Skyfire::Asio::IoContextExecutor::Stop
void Stop()
Definition
BoostAsioExecutor.h:42
Skyfire::Asio::IoContextExecutor::ResetWork
void ResetWork()
Definition
BoostAsioExecutor.h:37
Skyfire::Asio::IoContextExecutor::_workGuard
std::unique_ptr< IoContextWorkGuard > _workGuard
Definition
BoostAsioExecutor.h:60
Skyfire::Asio::IoContextExecutor::Run
std::size_t Run()
Definition
BoostAsioExecutor.h:47
Skyfire::Asio::IoContextExecutor::Restart
void Restart()
Definition
BoostAsioExecutor.h:27
Skyfire::Asio
Definition
DatabaseQueue.h:18
Skyfire::Asio::ResetWorkGuard
void ResetWorkGuard(std::unique_ptr< IoContextWorkGuard > &workGuard)
Definition
BoostAsioWork.h:53
Skyfire::Asio::MakeIoContextWorkGuard
std::unique_ptr< IoContextWorkGuard > MakeIoContextWorkGuard(boost::asio::io_context &ioContext)
Definition
BoostAsioWork.h:48
Skyfire
Definition
AuthPatchTransfer.h:12
src
server
shared
Threading
BoostAsioExecutor.h
Generated on
for Project SkyFire Core by
1.17.0