Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
RealmSocket.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_REALMSOCKET_H
7
#define SF_REALMSOCKET_H
8
9
#include "
Common.h
"
10
#include "
PacketLogServer.h
"
11
#include <boost/asio/ip/tcp.hpp>
12
#include <boost/system/error_code.hpp>
13
#include <array>
14
#include <atomic>
15
#include <deque>
16
#include <memory>
17
#include <string>
18
#include <vector>
19
20
typedef
boost::asio::ip::tcp::socket
RealmSocketHandle
;
21
22
class
RealmSocket
:
public
std::enable_shared_from_this<RealmSocket>
23
{
24
public
:
25
class
Session
26
{
27
public
:
28
Session
(
void
);
29
virtual
~Session
(
void
);
30
31
virtual
void
OnRead
(
void
) = 0;
32
virtual
void
OnAccept
(
void
) = 0;
33
virtual
void
OnClose
(
void
) = 0;
34
};
35
36
RealmSocket
(std::unique_ptr<RealmSocketHandle> socket, std::string remoteAddress,
uint16
remotePort);
37
~RealmSocket
(
void
);
38
39
void
Start
();
40
void
Close
();
41
42
size_t
GetAvailableBytes
(
void
)
const
;
43
bool
PeekBytes
(
void
* buf,
size_t
len,
size_t
offset = 0)
const
;
44
bool
ReadBytes
(
void
* buf,
size_t
len);
45
void
DiscardBytes
(
size_t
len);
46
47
bool
QueueSend
(
void
const
* buf,
size_t
len);
48
49
const
std::string&
getRemoteAddress
(
void
)
const
;
50
uint16
getRemotePort
(
void
)
const
;
51
void
SetPacketLogAccountName
(std::string accountName);
52
53
void
set_session
(std::unique_ptr<Session> session);
54
55
private
:
56
void
Run
();
57
void
AsyncRead
();
58
void
HandleRead
(boost::system::error_code
const
& error,
size_t
bytesTransferred);
59
void
QueueWrite
(std::vector<char> data);
60
void
StartAsyncWrite
();
61
void
HandleWrite
(boost::system::error_code
const
& error);
62
void
CloseSocket
();
63
void
NotifyClose
();
64
void
CompactInputBuffer
();
65
Skyfire::PacketLogServerSessionInfo
BuildPacketLogSessionInfo
()
const
;
66
void
LogAuthPacket
(
void
const
* data,
size_t
len,
Skyfire::PacketLogServerDirection
direction);
67
68
bool
IsOpen
(
void
)
const
;
69
70
std::unique_ptr<RealmSocketHandle>
_socket
;
71
std::array<char, 4096>
_readBuffer
;
72
std::vector<char>
_inputBuffer
;
73
size_t
_inputReadPos
;
74
std::unique_ptr<Session>
_session
;
75
std::string
_remoteAddress
;
76
std::string
_packetLogAccountName
;
77
uint16
_remotePort
;
78
std::deque<std::vector<char>>
_writeQueue
;
79
bool
_writeInProgress
;
80
std::atomic<bool>
_closed
;
81
std::atomic<bool>
_closeNotified
;
82
};
83
84
#endif
Common.h
uint16
std::uint16_t uint16
Definition
Define.h:78
PacketLogServer.h
RealmSocketHandle
boost::asio::ip::tcp::socket RealmSocketHandle
Definition
RealmSocket.h:20
RealmSocket::Session::OnRead
virtual void OnRead(void)=0
RealmSocket::Session::OnClose
virtual void OnClose(void)=0
RealmSocket::Session::Session
Session(void)
Definition
RealmSocket.cpp:46
RealmSocket::Session::~Session
virtual ~Session(void)
Definition
RealmSocket.cpp:48
RealmSocket::Session::OnAccept
virtual void OnAccept(void)=0
RealmSocket::_packetLogAccountName
std::string _packetLogAccountName
Definition
RealmSocket.h:76
RealmSocket::_inputReadPos
size_t _inputReadPos
Definition
RealmSocket.h:73
RealmSocket::LogAuthPacket
void LogAuthPacket(void const *data, size_t len, Skyfire::PacketLogServerDirection direction)
Definition
RealmSocket.cpp:296
RealmSocket::PeekBytes
bool PeekBytes(void *buf, size_t len, size_t offset=0) const
Definition
RealmSocket.cpp:97
RealmSocket::HandleRead
void HandleRead(boost::system::error_code const &error, size_t bytesTransferred)
Definition
RealmSocket.cpp:173
RealmSocket::_writeQueue
std::deque< std::vector< char > > _writeQueue
Definition
RealmSocket.h:78
RealmSocket::IsOpen
bool IsOpen(void) const
Definition
RealmSocket.cpp:244
RealmSocket::_session
std::unique_ptr< Session > _session
Definition
RealmSocket.h:74
RealmSocket::getRemotePort
uint16 getRemotePort(void) const
Definition
RealmSocket.cpp:81
RealmSocket::GetAvailableBytes
size_t GetAvailableBytes(void) const
Definition
RealmSocket.cpp:92
RealmSocket::ReadBytes
bool ReadBytes(void *buf, size_t len)
Definition
RealmSocket.cpp:113
RealmSocket::CloseSocket
void CloseSocket()
Definition
RealmSocket.cpp:249
RealmSocket::_writeInProgress
bool _writeInProgress
Definition
RealmSocket.h:79
RealmSocket::RealmSocket
RealmSocket(std::unique_ptr< RealmSocketHandle > socket, std::string remoteAddress, uint16 remotePort)
Definition
RealmSocket.cpp:50
RealmSocket::set_session
void set_session(std::unique_ptr< Session > session)
Definition
RealmSocket.cpp:150
RealmSocket::Start
void Start()
Definition
RealmSocket.cpp:63
RealmSocket::_remoteAddress
std::string _remoteAddress
Definition
RealmSocket.h:75
RealmSocket::Close
void Close()
Definition
RealmSocket.cpp:71
RealmSocket::BuildPacketLogSessionInfo
Skyfire::PacketLogServerSessionInfo BuildPacketLogSessionInfo() const
Definition
RealmSocket.cpp:286
RealmSocket::getRemoteAddress
const std::string & getRemoteAddress(void) const
Definition
RealmSocket.cpp:76
RealmSocket::_inputBuffer
std::vector< char > _inputBuffer
Definition
RealmSocket.h:72
RealmSocket::DiscardBytes
void DiscardBytes(size_t len)
Definition
RealmSocket.cpp:123
RealmSocket::QueueSend
bool QueueSend(void const *buf, size_t len)
Definition
RealmSocket.cpp:128
RealmSocket::_closeNotified
std::atomic< bool > _closeNotified
Definition
RealmSocket.h:81
RealmSocket::_closed
std::atomic< bool > _closed
Definition
RealmSocket.h:80
RealmSocket::_readBuffer
std::array< char, 4096 > _readBuffer
Definition
RealmSocket.h:71
RealmSocket::CompactInputBuffer
void CompactInputBuffer()
Definition
RealmSocket.cpp:273
RealmSocket::AsyncRead
void AsyncRead()
Definition
RealmSocket.cpp:160
RealmSocket::~RealmSocket
~RealmSocket(void)
Definition
RealmSocket.cpp:58
RealmSocket::Run
void Run()
Definition
RealmSocket.cpp:155
RealmSocket::_socket
std::unique_ptr< RealmSocketHandle > _socket
Definition
RealmSocket.h:70
RealmSocket::SetPacketLogAccountName
void SetPacketLogAccountName(std::string accountName)
Definition
RealmSocket.cpp:86
RealmSocket::HandleWrite
void HandleWrite(boost::system::error_code const &error)
Definition
RealmSocket.cpp:221
RealmSocket::QueueWrite
void QueueWrite(std::vector< char > data)
Definition
RealmSocket.cpp:194
RealmSocket::StartAsyncWrite
void StartAsyncWrite()
Definition
RealmSocket.cpp:206
RealmSocket::_remotePort
uint16 _remotePort
Definition
RealmSocket.h:77
RealmSocket::NotifyClose
void NotifyClose()
Definition
RealmSocket.cpp:261
Skyfire::PacketLogServerDirection
PacketLogServerDirection
Definition
PacketLogServer.h:22
Skyfire::PacketLogServerSessionInfo
Definition
PacketLogServer.h:28
src
server
authserver
Server
RealmSocket.h
Generated on
for Project SkyFire Core by
1.17.0