LeviLamina
Loading...
Searching...
No Matches
DcSctpSocket.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/external/dcsctp/DcSctpSocketInterface.h"
7#include "mc/external/dcsctp/ResetStreamsStatus.h"
8#include "mc/external/dcsctp/SctpImplementation.h"
9#include "mc/external/dcsctp/SctpPacket.h"
10#include "mc/external/dcsctp/SendPacketStatus.h"
11#include "mc/external/dcsctp/SendStatus.h"
12#include "mc/external/dcsctp/SocketState.h"
13#include "mc/external/webrtc/StrongAlias.h"
14
15// auto generated forward declare list
16// clang-format off
17namespace dcsctp { class AnyDataChunk; }
18namespace dcsctp { class AnyForwardTsnChunk; }
19namespace dcsctp { class DcSctpMessage; }
20namespace dcsctp { class DcSctpSocketCallbacks; }
21namespace dcsctp { class HandoverReadinessStatus; }
22namespace dcsctp { class PacketObserver; }
23namespace dcsctp { class SctpPacket; }
24namespace dcsctp { class StateCookie; }
25namespace dcsctp { class StreamIDTag; }
26namespace dcsctp { class StreamPriorityTag; }
27namespace dcsctp { class TSNTag; }
28namespace dcsctp { class TieTagTag; }
29namespace dcsctp { class TimeoutTag; }
30namespace dcsctp { class VerificationTagTag; }
31namespace dcsctp { struct Capabilities; }
32namespace dcsctp { struct CommonHeader; }
33namespace dcsctp { struct DcSctpOptions; }
34namespace dcsctp { struct DcSctpSocketHandoverState; }
35namespace dcsctp { struct Metrics; }
36namespace dcsctp { struct SendOptions; }
37namespace webrtc { class TimeDelta; }
38// clang-format on
39
40namespace dcsctp {
41
42class DcSctpSocket : public ::dcsctp::DcSctpSocketInterface {
43public:
44 // DcSctpSocket inner types declare
45 // clang-format off
46 struct ConnectParameters;
47 // clang-format on
48
49 // DcSctpSocket inner types define
50 enum class State : int {
51 KClosed = 0,
52 KCookieWait = 1,
53 KCookieEchoed = 2,
54 KEstablished = 3,
55 KShutdownPending = 4,
56 KShutdownSent = 5,
57 KShutdownReceived = 6,
58 KShutdownAckSent = 7,
59 };
60
61 struct ConnectParameters {
62 public:
63 // member variables
64 // NOLINTBEGIN
67 // NOLINTEND
68
69 public:
70 // prevent constructor by default
71 ConnectParameters& operator=(ConnectParameters const&);
72 ConnectParameters(ConnectParameters const&);
73 ConnectParameters();
74 };
75
76public:
77 // member variables
78 // NOLINTBEGIN
93 // NOLINTEND
94
95public:
96 // prevent constructor by default
97 DcSctpSocket& operator=(DcSctpSocket const&);
98 DcSctpSocket(DcSctpSocket const&);
99 DcSctpSocket();
100
101public:
102 // virtual functions
103 // NOLINTBEGIN
104 virtual void ReceivePacket(::rtc::ArrayView<uchar const> data) /*override*/;
105
106 virtual void HandleTimeout(::webrtc::StrongAlias<::dcsctp::TimeoutTag, uint64> timeout_id) /*override*/;
107
108 virtual void Connect() /*override*/;
109
110 virtual void RestoreFromState(::dcsctp::DcSctpSocketHandoverState const& state) /*override*/;
111
112 virtual void Shutdown() /*override*/;
113
114 virtual void Close() /*override*/;
115
116 virtual ::dcsctp::SendStatus
117 Send(::dcsctp::DcSctpMessage message, ::dcsctp::SendOptions const& send_options) /*override*/;
118
119 virtual ::std::vector<::dcsctp::SendStatus> SendMany(
121 ::dcsctp::SendOptions const& send_options
122 ) /*override*/;
123
124 virtual ::dcsctp::ResetStreamsStatus ResetStreams(
126 ) /*override*/;
127
128 virtual ::dcsctp::SocketState state() const /*override*/;
129
130 virtual ::dcsctp::DcSctpOptions const& options() const /*override*/;
131
132 virtual void SetMaxMessageSize(uint64 max_message_size) /*override*/;
133
134 virtual void SetStreamPriority(
135 ::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id,
136 ::webrtc::StrongAlias<::dcsctp::StreamPriorityTag, ushort> priority
137 ) /*override*/;
138
139 virtual ::webrtc::StrongAlias<::dcsctp::StreamPriorityTag, ushort>
140 GetStreamPriority(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const /*override*/;
141
142 virtual uint64 buffered_amount(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const /*override*/;
143
144 virtual uint64 buffered_amount_low_threshold(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const
145 /*override*/;
146
147 virtual void SetBufferedAmountLowThreshold(
148 ::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id,
149 uint64 bytes
150 ) /*override*/;
151
152 virtual ::std::optional<::dcsctp::Metrics> GetMetrics() const /*override*/;
153
154 virtual ::dcsctp::HandoverReadinessStatus GetHandoverReadiness() const /*override*/;
155
156 virtual ::std::optional<::dcsctp::DcSctpSocketHandoverState> GetHandoverStateAndClose() /*override*/;
157
158 virtual ::dcsctp::SctpImplementation peer_implementation() const /*override*/;
159
160 virtual ~DcSctpSocket() /*override*/ = default;
161 // NOLINTEND
162
163public:
164 // member functions
165 // NOLINTBEGIN
167
169 ::dcsctp::Capabilities const& capabilities,
170 ::webrtc::StrongAlias<::dcsctp::VerificationTagTag, uint> my_verification_tag,
171 ::webrtc::StrongAlias<::dcsctp::TSNTag, uint> my_initial_tsn,
172 ::webrtc::StrongAlias<::dcsctp::VerificationTagTag, uint> peer_verification_tag,
173 ::webrtc::StrongAlias<::dcsctp::TSNTag, uint> peer_initial_tsn,
174 uint64 a_rwnd,
175 ::webrtc::StrongAlias<::dcsctp::TieTagTag, uint64> tie_tag
176 );
177
178 MCNAPI DcSctpSocket(
179 ::std::string_view log_prefix,
180 ::dcsctp::DcSctpSocketCallbacks& callbacks,
181 ::std::unique_ptr<::dcsctp::PacketObserver> packet_observer,
182 ::dcsctp::DcSctpOptions const& options
183 );
184
185 MCNAPI bool Dispatch(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
186
187 MCNAPI void
188 HandleAbort(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
189
190 MCNAPI void
191 HandleCookieEcho(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
192
193 MCNAPI bool HandleCookieEchoWithTCB(::dcsctp::CommonHeader const& header, ::dcsctp::StateCookie const& cookie);
194
195 MCNAPI void HandleDataCommon(::dcsctp::AnyDataChunk& chunk);
196
197 MCNAPI void
198 HandleError(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
199
200 MCNAPI void HandleForwardTsnCommon(::dcsctp::AnyForwardTsnChunk const& chunk);
201
202 MCNAPI void
203 HandleInit(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
204
205 MCNAPI void
206 HandleInitAck(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
207
208 MCNAPI void
209 HandleShutdownAck(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
210
211 MCNAPI bool HandleUnrecognizedChunk(::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
212
213 MCNAPI ::dcsctp::SendStatus
214 InternalSend(::dcsctp::DcSctpMessage const& message, ::dcsctp::SendOptions const& send_options);
215
216 MCNAPI void MaybeDeliverMessages();
217
219
221
222 MCNAPI ::webrtc::TimeDelta OnCookieTimerExpiry();
223
224 MCNAPI ::webrtc::TimeDelta OnInitTimerExpiry();
225
226 MCNAPI void OnSentPacket(::rtc::ArrayView<uchar const> packet, ::dcsctp::SendPacketStatus status);
227
228 MCNAPI ::webrtc::TimeDelta OnShutdownTimerExpiry();
229
230 MCNAPI void ReportFailedToParseChunk(int chunk_type);
231
232 MCNAPI void SendInit();
233
234 MCNAPI void SendShutdown();
235
236 MCNAPI void SendShutdownAck();
237
238 MCNAPI bool ValidatePacket(::dcsctp::SctpPacket const& packet);
239 // NOLINTEND
240
241public:
242 // constructor thunks
243 // NOLINTBEGIN
244 MCNAPI void* $ctor(
245 ::std::string_view log_prefix,
246 ::dcsctp::DcSctpSocketCallbacks& callbacks,
247 ::std::unique_ptr<::dcsctp::PacketObserver> packet_observer,
248 ::dcsctp::DcSctpOptions const& options
249 );
250 // NOLINTEND
251
252public:
253 // virtual function thunks
254 // NOLINTBEGIN
255 MCNAPI void $ReceivePacket(::rtc::ArrayView<uchar const> data);
256
257 MCNAPI void $HandleTimeout(::webrtc::StrongAlias<::dcsctp::TimeoutTag, uint64> timeout_id);
258
259 MCNAPI void $Connect();
260
261 MCNAPI void $RestoreFromState(::dcsctp::DcSctpSocketHandoverState const& state);
262
263 MCNAPI void $Shutdown();
264
265 MCNAPI void $Close();
266
267 MCNAPI ::dcsctp::SendStatus $Send(::dcsctp::DcSctpMessage message, ::dcsctp::SendOptions const& send_options);
268
269 MCNAPI ::std::vector<::dcsctp::SendStatus>
270 $SendMany(::rtc::ArrayView<::dcsctp::DcSctpMessage> messages, ::dcsctp::SendOptions const& send_options);
271
272 MCNAPI ::dcsctp::ResetStreamsStatus
273 $ResetStreams(::rtc::ArrayView<::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> const> outgoing_streams);
274
275 MCNAPI ::dcsctp::SocketState $state() const;
276
277 MCNAPI ::dcsctp::DcSctpOptions const& $options() const;
278
279 MCNAPI void $SetMaxMessageSize(uint64 max_message_size);
280
282 ::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id,
283 ::webrtc::StrongAlias<::dcsctp::StreamPriorityTag, ushort> priority
284 );
285
286 MCNAPI ::webrtc::StrongAlias<::dcsctp::StreamPriorityTag, ushort>
287 $GetStreamPriority(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const;
288
289 MCNAPI uint64 $buffered_amount(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const;
290
291 MCNAPI uint64 $buffered_amount_low_threshold(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const;
292
293 MCNAPI void
294 $SetBufferedAmountLowThreshold(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id, uint64 bytes);
295
296 MCNAPI ::std::optional<::dcsctp::Metrics> $GetMetrics() const;
297
299
301
302 MCNAPI ::dcsctp::SctpImplementation $peer_implementation() const;
303
304
305 // NOLINTEND
306
307public:
308 // vftables
309 // NOLINTBEGIN
310 MCNAPI static void** $vftable();
311 // NOLINTEND
312};
313
314} // namespace dcsctp
Definition AnyDataChunk.h:18
Definition AnyForwardTsnChunk.h:16
Definition DcSctpMessage.h:16
Definition DcSctpSocketCallbacks.h:23
Definition DcSctpSocketInterface.h:27
MCAPI void $SetBufferedAmountLowThreshold(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort > stream_id, uint64 bytes)
MCAPI bool Dispatch(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI::webrtc::TimeDelta OnShutdownTimerExpiry()
MCAPI void HandleInit(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void MaybeDeliverMessages()
MCAPI void $Shutdown()
MCAPI void HandleForwardTsnCommon(::dcsctp::AnyForwardTsnChunk const &chunk)
MCAPI void OnSentPacket(::rtc::ArrayView< uchar const > packet, ::dcsctp::SendPacketStatus status)
MCAPI void $Connect()
static MCAPI void ** $vftable()
MCAPI void HandleError(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI::dcsctp::ResetStreamsStatus $ResetStreams(::rtc::ArrayView<::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort > const > outgoing_streams)
MCAPI void HandleCookieEcho(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void $SetStreamPriority(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort > stream_id, ::webrtc::StrongAlias<::dcsctp::StreamPriorityTag, ushort > priority)
MCAPI void $RestoreFromState(::dcsctp::DcSctpSocketHandoverState const &state)
MCAPI ::std::vector<::dcsctp::SendStatus > $SendMany(::rtc::ArrayView<::dcsctp::DcSctpMessage > messages, ::dcsctp::SendOptions const &send_options)
MCAPI ::std::optional<::dcsctp::DcSctpSocketHandoverState > $GetHandoverStateAndClose()
MCAPI::dcsctp::SctpImplementation $peer_implementation() const
MCAPI::webrtc::TimeDelta OnInitTimerExpiry()
MCAPI void ReportFailedToParseChunk(int chunk_type)
MCAPI void CloseConnectionBecauseOfTooManyTransmissionErrors()
MCAPI void HandleAbort(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI::dcsctp::SocketState $state() const
MCAPI::dcsctp::DcSctpOptions const & $options() const
MCAPI ::webrtc::StrongAlias<::dcsctp::StreamPriorityTag, ushort > $GetStreamPriority(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort > stream_id) const
MCAPI uint64 $buffered_amount_low_threshold(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort > stream_id) const
MCAPI::dcsctp::SendStatus InternalSend(::dcsctp::DcSctpMessage const &message, ::dcsctp::SendOptions const &send_options)
MCAPI uint64 $buffered_amount(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort > stream_id) const
MCAPI void $HandleTimeout(::webrtc::StrongAlias<::dcsctp::TimeoutTag, uint64 > timeout_id)
MCAPI ::std::optional<::dcsctp::Metrics > $GetMetrics() const
MCAPI bool ValidatePacket(::dcsctp::SctpPacket const &packet)
MCAPI void $ReceivePacket(::rtc::ArrayView< uchar const > data)
MCAPI void SendShutdown()
MCAPI::webrtc::TimeDelta OnCookieTimerExpiry()
MCAPI void HandleDataCommon(::dcsctp::AnyDataChunk &chunk)
MCAPI bool HandleCookieEchoWithTCB(::dcsctp::CommonHeader const &header, ::dcsctp::StateCookie const &cookie)
MCAPI void CreateTransmissionControlBlock(::dcsctp::Capabilities const &capabilities, ::webrtc::StrongAlias<::dcsctp::VerificationTagTag, uint > my_verification_tag, ::webrtc::StrongAlias<::dcsctp::TSNTag, uint > my_initial_tsn, ::webrtc::StrongAlias<::dcsctp::VerificationTagTag, uint > peer_verification_tag, ::webrtc::StrongAlias<::dcsctp::TSNTag, uint > peer_initial_tsn, uint64 a_rwnd, ::webrtc::StrongAlias<::dcsctp::TieTagTag, uint64 > tie_tag)
MCAPI bool HandleUnrecognizedChunk(::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void SendShutdownAck()
MCAPI::dcsctp::HandoverReadinessStatus $GetHandoverReadiness() const
MCAPI void HandleInitAck(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void MaybeSendResetStreamsRequest()
MCAPI void MaybeSendShutdownOrAck()
MCAPI void HandleShutdownAck(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void SendInit()
MCAPI void $SetMaxMessageSize(uint64 max_message_size)
MCAPI void $Close()
MCAPI::dcsctp::SendStatus $Send(::dcsctp::DcSctpMessage message, ::dcsctp::SendOptions const &send_options)
MCAPI void * $ctor(::std::string_view log_prefix, ::dcsctp::DcSctpSocketCallbacks &callbacks, ::std::unique_ptr<::dcsctp::PacketObserver > packet_observer, ::dcsctp::DcSctpOptions const &options)
Definition HandoverReadinessStatus.h:15
Definition PacketObserver.h:12
Definition SctpPacket.h:17
Definition StateCookie.h:7
Definition StreamIDTag.h:7
Definition StreamPriorityTag.h:7
Definition TSNTag.h:7
Definition TieTagTag.h:7
Definition TimeoutTag.h:7
Definition VerificationTagTag.h:7
Definition _HeaderOutputPredefine.h:310
Definition StrongAlias.h:8
Definition TimeDelta.h:10
STL namespace.
Definition Capabilities.h:7
Definition CommonHeader.h:7
Definition DcSctpOptions.h:7
Definition DcSctpSocketHandoverState.h:7
Definition DcSctpSocket.h:61
Definition Metrics.h:7
Definition SendOptions.h:7
Definition Alias.h:14