LeviLamina
Loading...
Searching...
No Matches
RakWebSocket.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/websockets/CloseStatusCode.h"
7#include "mc/websockets/OpCode.h"
8#include "mc/websockets/WSConnectionResult.h"
9
10// auto generated forward declare list
11// clang-format off
13class TcpProxy;
14namespace RakNet { class BitStream; }
15// clang-format on
16
17class RakWebSocket {
18public:
19 // RakWebSocket inner types define
20 enum class ConnectionState : int {
21 None = 0,
22 CloseHandshake = 1,
23 Starting = 2,
24 Connecting = 3,
25 OpenHandshakeInit = 4,
26 OpenHandshakeAwait = 5,
27 OpenAndProcessing = 6,
28 };
29
30 enum class PacketDirection : int {
31 Inward = 1,
32 Outward = 2,
33 Bothways = 3,
34 };
35
36public:
37 // member variables
38 // NOLINTBEGIN
66 // NOLINTEND
67
68public:
69 // prevent constructor by default
70 RakWebSocket& operator=(RakWebSocket const&);
71 RakWebSocket(RakWebSocket const&);
72 RakWebSocket();
73
74public:
75 // virtual functions
76 // NOLINTBEGIN
77 virtual ~RakWebSocket();
78
79 virtual ::WSConnectionResult connect(::std::string const& uri, ::std::vector<::std::string> const& subProtocols);
80
81 virtual ::WSConnectionResult connect(::std::string const& uri);
82
83 virtual bool isReady() const;
84
85 virtual void setOnMessageReceivedHandler(::std::function<void(::RakWebSocketDataFrame const&)> const& handler);
86
87 virtual void setOnCloseHandler(::std::function<void(::CloseStatusCode, ::std::string const&)> const& handler);
88
89 virtual void setOnConnectedHandler(::std::function<void(::std::string const&)> const& handler);
90
91 virtual void tick();
92
93 virtual void _updateState() = 0;
94
95 virtual uint _genMaskingKey() const = 0;
96 // NOLINTEND
97
98public:
99 // member functions
100 // NOLINTBEGIN
101 MCNAPI RakWebSocket(::std::unique_ptr<::TcpProxy> proxy, bool isServer);
102
103 MCNAPI void _close(::CloseStatusCode code);
104
105 MCNAPI void _createWebSocketKey();
106
107 MCNAPI void _fail(::std::string const& error, ::CloseStatusCode code);
108
109 MCNAPI ::std::string _generateBase64SHA1Key(::std::string const& key);
110
111 MCNAPI void _processClosingHandshake(bool notifyHandler);
112
113 MCNAPI void _processDataFrames(::RakNet::BitStream& newIncoming);
114
115 MCNAPI bool
116 _processPacket(::std::function<void(::RakNet::BitStream&)> const& processStep, bool acceptNewConnection);
117
118 MCNAPI void _reset();
119
120 MCNAPI bool _resolveURI();
121
122 MCNAPI bool _sendControlFrame(uchar const* payload, uint64 size, ::OpCode opCode);
123
124 MCNAPI bool _sendDataFrame(uchar const* payload, uint size, ::OpCode opCode, bool isFinalFragment);
125
126 MCNAPI bool _sendNonControlFrame(uchar const* payload, uint64 size, ::OpCode opCode);
127
128 MCNAPI void
129 _splitWebSocketURI(::std::string const& uri, ::std::string& scheme, ::std::string& host, ::std::string& path);
130
132
133 MCNAPI void _validateFields();
134
136
137 MCNAPI bool send(::std::string const& message);
138 // NOLINTEND
139
140public:
141 // constructor thunks
142 // NOLINTBEGIN
143 MCNAPI void* $ctor(::std::unique_ptr<::TcpProxy> proxy, bool isServer);
144 // NOLINTEND
145
146public:
147 // destructor thunk
148 // NOLINTBEGIN
149 MCNAPI void $dtor();
150 // NOLINTEND
151
152public:
153 // virtual function thunks
154 // NOLINTBEGIN
155 MCNAPI ::WSConnectionResult $connect(::std::string const& uri, ::std::vector<::std::string> const& subProtocols);
156
157 MCNAPI ::WSConnectionResult $connect(::std::string const& uri);
158
159 MCNAPI bool $isReady() const;
160
161 MCNAPI void $setOnMessageReceivedHandler(::std::function<void(::RakWebSocketDataFrame const&)> const& handler);
162
163 MCNAPI void $setOnCloseHandler(::std::function<void(::CloseStatusCode, ::std::string const&)> const& handler);
164
165 MCNAPI void $setOnConnectedHandler(::std::function<void(::std::string const&)> const& handler);
166
167 MCNAPI void $tick();
168
169
170 // NOLINTEND
171
172public:
173 // vftables
174 // NOLINTBEGIN
175 MCNAPI static void** $vftable();
176 // NOLINTEND
177};
Definition BitStream.h:7
Definition RakWebSocketDataFrame.h:13
MCAPI void _subProcessHttpResponse(::RakNet::BitStream &newIncoming)
MCAPI bool _sendControlFrame(uchar const *payload, uint64 size, ::OpCode opCode)
MCAPI void $tick()
MCAPI void _processClosingHandshake(bool notifyHandler)
MCAPI void _createWebSocketKey()
MCAPI void $setOnCloseHandler(::std::function< void(::CloseStatusCode, ::std::string const &)> const &handler)
MCAPI bool send(::std::string const &message)
MCAPI void _fail(::std::string const &error, ::CloseStatusCode code)
MCAPI void $setOnMessageReceivedHandler(::std::function< void(::RakWebSocketDataFrame const &)> const &handler)
MCAPI void _reset()
MCAPI void $dtor()
MCAPI::WSConnectionResult $connect(::std::string const &uri, ::std::vector<::std::string > const &subProtocols)
MCAPI::WSConnectionResult $connect(::std::string const &uri)
static MCAPI void ** $vftable()
MCAPI void * $ctor(::std::unique_ptr<::TcpProxy > proxy, bool isServer)
MCAPI bool _sendNonControlFrame(uchar const *payload, uint64 size, ::OpCode opCode)
MCAPI bool _resolveURI()
MCAPI bool _validateWebSocketURI()
MCAPI bool _processPacket(::std::function< void(::RakNet::BitStream &)> const &processStep, bool acceptNewConnection)
MCAPI RakWebSocket(::std::unique_ptr<::TcpProxy > proxy, bool isServer)
MCAPI void _splitWebSocketURI(::std::string const &uri, ::std::string &scheme, ::std::string &host, ::std::string &path)
MCAPI bool _sendDataFrame(uchar const *payload, uint size, ::OpCode opCode, bool isFinalFragment)
MCAPI bool $isReady() const
MCAPI void $setOnConnectedHandler(::std::function< void(::std::string const &)> const &handler)
MCAPI void _close(::CloseStatusCode code)
MCAPI void _validateFields()
MCAPI::std::string _generateBase64SHA1Key(::std::string const &key)
MCAPI void _processDataFrames(::RakNet::BitStream &newIncoming)
Definition TcpProxy.h:11
Definition code.h:5
Definition Alias.h:14