Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
WorldSocketSessionState.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_WORLDSOCKETSESSIONSTATE_H
7
#define SF_WORLDSOCKETSESSIONSTATE_H
8
9
#include "
Platform/Threading.h
"
10
11
#include <utility>
12
13
class
WorldSession
;
14
15
class
WorldSocketSessionState
16
{
17
public
:
18
WorldSocketSessionState
() :
_session
(nullptr) { }
19
20
bool
Attach
(
WorldSession
* session)
21
{
22
if
(!session)
23
return
false
;
24
25
GuardType
guard(
_lock
);
26
if
(
_session
)
27
return
false
;
28
29
_session
= session;
30
return
true
;
31
}
32
33
bool
Detach
(
WorldSession
* session)
34
{
35
if
(!session)
36
return
false
;
37
38
GuardType
guard(
_lock
);
39
if
(
_session
!= session)
40
return
false
;
41
42
_session
=
nullptr
;
43
return
true
;
44
}
45
46
bool
HasSession
()
const
47
{
48
GuardType
guard(
_lock
);
49
return
_session
!=
nullptr
;
50
}
51
52
template
<
class
Callback>
53
auto
WithSession
(Callback&& callback)
const
->
decltype
(callback(
static_cast<
WorldSession
*
>
(
nullptr
)))
54
{
55
GuardType
guard(
_lock
);
56
return
callback(
_session
);
57
}
58
59
private
:
60
typedef
Skyfire::Mutex
LockType
;
61
typedef
std::lock_guard<LockType>
GuardType
;
62
63
mutable
LockType
_lock
;
64
WorldSession
*
_session
;
65
};
66
67
#endif
Threading.h
Skyfire::Mutex
Definition
Threading.h:18
WorldSession
Player session in the World.
Definition
WorldSession.h:254
WorldSocketSessionState::HasSession
bool HasSession() const
Definition
WorldSocketSessionState.h:46
WorldSocketSessionState::_session
WorldSession * _session
Definition
WorldSocketSessionState.h:64
WorldSocketSessionState::GuardType
std::lock_guard< LockType > GuardType
Definition
WorldSocketSessionState.h:61
WorldSocketSessionState::_lock
LockType _lock
Definition
WorldSocketSessionState.h:63
WorldSocketSessionState::Detach
bool Detach(WorldSession *session)
Definition
WorldSocketSessionState.h:33
WorldSocketSessionState::WorldSocketSessionState
WorldSocketSessionState()
Definition
WorldSocketSessionState.h:18
WorldSocketSessionState::WithSession
auto WithSession(Callback &&callback) const -> decltype(callback(static_cast< WorldSession * >(nullptr)))
Definition
WorldSocketSessionState.h:53
WorldSocketSessionState::Attach
bool Attach(WorldSession *session)
Definition
WorldSocketSessionState.h:20
WorldSocketSessionState::LockType
Skyfire::Mutex LockType
Definition
WorldSocketSessionState.h:60
src
server
game
Server
WorldSocketSessionState.h
Generated on
for Project SkyFire Core by
1.17.0