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/ErrorKind.h"
8#include "mc/external/dcsctp/ResetStreamsStatus.h"
9#include "mc/external/dcsctp/SctpImplementation.h"
10#include "mc/external/dcsctp/SctpPacket.h"
11#include "mc/external/dcsctp/SendPacketStatus.h"
12#include "mc/external/dcsctp/SendStatus.h"
13#include "mc/external/dcsctp/SocketState.h"
14#include "mc/external/webrtc/StrongAlias.h"
15
16// auto generated forward declare list
17// clang-format off
18namespace dcsctp { class AnyDataChunk; }
19namespace dcsctp { class AnyForwardTsnChunk; }
20namespace dcsctp { class DcSctpMessage; }
21namespace dcsctp { class DcSctpSocketCallbacks; }
22namespace dcsctp { class HandoverReadinessStatus; }
23namespace dcsctp { class PacketObserver; }
24namespace dcsctp { class SctpPacket; }
25namespace dcsctp { class StateCookie; }
26namespace dcsctp { class StreamIDTag; }
27namespace dcsctp { class StreamPriorityTag; }
28namespace dcsctp { class TSNTag; }
29namespace dcsctp { class TieTagTag; }
30namespace dcsctp { class TimeoutTag; }
31namespace dcsctp { class VerificationTagTag; }
32namespace dcsctp { struct Capabilities; }
33namespace dcsctp { struct CommonHeader; }
34namespace dcsctp { struct DcSctpOptions; }
35namespace dcsctp { struct DcSctpSocketHandoverState; }
36namespace dcsctp { struct Metrics; }
37namespace dcsctp { struct SendOptions; }
38namespace webrtc { class TimeDelta; }
39// clang-format on
40
41namespace dcsctp {
42
44public:
45 // DcSctpSocket inner types declare
46 // clang-format off
47 struct ConnectParameters;
48 // clang-format on
49
50 // DcSctpSocket inner types define
52 public:
53 // member variables
54 // NOLINTBEGIN
57 // NOLINTEND
58
59 public:
60 // prevent constructor by default
61 ConnectParameters& operator=(ConnectParameters const&);
64 };
65
66 enum class State : int {
67 KClosed = 0,
68 KCookieWait = 1,
69 KCookieEchoed = 2,
70 KEstablished = 3,
71 KShutdownPending = 4,
72 KShutdownSent = 5,
73 KShutdownReceived = 6,
74 KShutdownAckSent = 7,
75 };
76
77public:
78 // member variables
79 // NOLINTBEGIN
94 // NOLINTEND
95
96public:
97 // prevent constructor by default
98 DcSctpSocket& operator=(DcSctpSocket const&);
100 DcSctpSocket();
101
102public:
103 // virtual functions
104 // NOLINTBEGIN
105 // vIndex: 1
106 virtual void ReceivePacket(::rtc::ArrayView<uchar const> data) /*override*/;
107
108 // vIndex: 2
109 virtual void HandleTimeout(::webrtc::StrongAlias<::dcsctp::TimeoutTag, uint64> timeout_id) /*override*/;
110
111 // vIndex: 3
112 virtual void Connect() /*override*/;
113
114 // vIndex: 4
115 virtual void RestoreFromState(::dcsctp::DcSctpSocketHandoverState const& state) /*override*/;
116
117 // vIndex: 5
118 virtual void Shutdown() /*override*/;
119
120 // vIndex: 6
121 virtual void Close() /*override*/;
122
123 // vIndex: 12
124 virtual ::dcsctp::SendStatus
125 Send(::dcsctp::DcSctpMessage message, ::dcsctp::SendOptions const& send_options) /*override*/;
126
127 // vIndex: 13
128 virtual ::std::vector<::dcsctp::SendStatus> SendMany(
130 ::dcsctp::SendOptions const& send_options
131 ) /*override*/;
132
133 // vIndex: 14
134 virtual ::dcsctp::ResetStreamsStatus ResetStreams(
136 ) /*override*/;
137
138 // vIndex: 7
139 virtual ::dcsctp::SocketState state() const /*override*/;
140
141 // vIndex: 8
142 virtual ::dcsctp::DcSctpOptions const& options() const /*override*/;
143
144 // vIndex: 9
145 virtual void SetMaxMessageSize(uint64 max_message_size) /*override*/;
146
147 // vIndex: 10
148 virtual void SetStreamPriority(
149 ::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id,
150 ::webrtc::StrongAlias<::dcsctp::StreamPriorityTag, ushort> priority
151 ) /*override*/;
152
153 // vIndex: 11
154 virtual ::webrtc::StrongAlias<::dcsctp::StreamPriorityTag, ushort>
155 GetStreamPriority(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const /*override*/;
156
157 // vIndex: 15
158 virtual uint64 buffered_amount(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const /*override*/;
159
160 // vIndex: 16
161 virtual uint64 buffered_amount_low_threshold(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const
162 /*override*/;
163
164 // vIndex: 17
165 virtual void SetBufferedAmountLowThreshold(
166 ::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id,
167 uint64 bytes
168 ) /*override*/;
169
170 // vIndex: 18
171 virtual ::std::optional<::dcsctp::Metrics> GetMetrics() const /*override*/;
172
173 // vIndex: 19
174 virtual ::dcsctp::HandoverReadinessStatus GetHandoverReadiness() const /*override*/;
175
176 // vIndex: 20
177 virtual ::std::optional<::dcsctp::DcSctpSocketHandoverState> GetHandoverStateAndClose() /*override*/;
178
179 // vIndex: 21
180 virtual ::dcsctp::SctpImplementation peer_implementation() const /*override*/;
181
182 // vIndex: 0
183 virtual ~DcSctpSocket() /*override*/ = default;
184 // NOLINTEND
185
186public:
187 // member functions
188 // NOLINTBEGIN
190
192 ::dcsctp::Capabilities const& capabilities,
193 ::webrtc::StrongAlias<::dcsctp::VerificationTagTag, uint> my_verification_tag,
194 ::webrtc::StrongAlias<::dcsctp::TSNTag, uint> my_initial_tsn,
195 ::webrtc::StrongAlias<::dcsctp::VerificationTagTag, uint> peer_verification_tag,
196 ::webrtc::StrongAlias<::dcsctp::TSNTag, uint> peer_initial_tsn,
197 uint64 a_rwnd,
198 ::webrtc::StrongAlias<::dcsctp::TieTagTag, uint64> tie_tag
199 );
200
202 ::std::string_view log_prefix,
203 ::dcsctp::DcSctpSocketCallbacks& callbacks,
204 ::std::unique_ptr<::dcsctp::PacketObserver> packet_observer,
205 ::dcsctp::DcSctpOptions const& options
206 );
207
208 MCNAPI bool Dispatch(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
209
210 MCNAPI void
211 HandleAbort(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
212
213 MCNAPI void
214 HandleCookieAck(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
215
216 MCNAPI void
217 HandleCookieEcho(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
218
219 MCNAPI bool HandleCookieEchoWithTCB(::dcsctp::CommonHeader const& header, ::dcsctp::StateCookie const& cookie);
220
221 MCNAPI void
222 HandleData(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
223
224 MCNAPI void HandleDataCommon(::dcsctp::AnyDataChunk& chunk);
225
226 MCNAPI void
227 HandleError(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
228
229 MCNAPI void
230 HandleForwardTsn(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
231
232 MCNAPI void HandleForwardTsnCommon(::dcsctp::AnyForwardTsnChunk const& chunk);
233
234 MCNAPI void
235 HandleHeartbeatAck(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
236
238 ::dcsctp::CommonHeader const& header,
239 ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor
240 );
241
242 MCNAPI void
243 HandleIData(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
244
245 MCNAPI void
246 HandleIForwardTsn(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
247
248 MCNAPI void
249 HandleInit(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
250
251 MCNAPI void
252 HandleInitAck(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
253
254 MCNAPI void
255 HandleReconfig(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
256
257 MCNAPI void
258 HandleSack(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
259
260 MCNAPI void
261 HandleShutdown(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
262
263 MCNAPI void
264 HandleShutdownAck(::dcsctp::CommonHeader const& header, ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
265
267 ::dcsctp::CommonHeader const& header,
268 ::dcsctp::SctpPacket::ChunkDescriptor const& descriptor
269 );
270
271 MCNAPI bool HandleUnrecognizedChunk(::dcsctp::SctpPacket::ChunkDescriptor const& descriptor);
272
273 MCNAPI void InternalClose(::dcsctp::ErrorKind error, ::std::string_view message);
274
275 MCNAPI ::dcsctp::SendStatus
276 InternalSend(::dcsctp::DcSctpMessage const& message, ::dcsctp::SendOptions const& send_options);
277
278 MCNAPI void MaybeDeliverMessages();
279
281
282 MCNAPI void MaybeSendShutdownOnPacketReceived(::dcsctp::SctpPacket const& packet);
283
285
286 MCNAPI ::webrtc::TimeDelta OnCookieTimerExpiry();
287
288 MCNAPI ::webrtc::TimeDelta OnInitTimerExpiry();
289
290 MCNAPI void OnSentPacket(::rtc::ArrayView<uchar const> packet, ::dcsctp::SendPacketStatus status);
291
292 MCNAPI ::webrtc::TimeDelta OnShutdownTimerExpiry();
293
294 MCNAPI void ReportFailedToParseChunk(int chunk_type);
295
296 MCNAPI void SendInit();
297
298 MCNAPI void SendShutdown();
299
300 MCNAPI void SendShutdownAck();
301
302 MCNAPI void SetState(::dcsctp::DcSctpSocket::State state, ::std::string_view reason);
303
304 MCNAPI bool ValidateHasTCB();
305
306 MCNAPI bool ValidatePacket(::dcsctp::SctpPacket const& packet);
307 // NOLINTEND
308
309public:
310 // constructor thunks
311 // NOLINTBEGIN
312 MCNAPI void* $ctor(
313 ::std::string_view log_prefix,
314 ::dcsctp::DcSctpSocketCallbacks& callbacks,
315 ::std::unique_ptr<::dcsctp::PacketObserver> packet_observer,
316 ::dcsctp::DcSctpOptions const& options
317 );
318 // NOLINTEND
319
320public:
321 // virtual function thunks
322 // NOLINTBEGIN
323 MCNAPI void $ReceivePacket(::rtc::ArrayView<uchar const> data);
324
325 MCNAPI void $HandleTimeout(::webrtc::StrongAlias<::dcsctp::TimeoutTag, uint64> timeout_id);
326
327 MCNAPI void $Connect();
328
329 MCNAPI void $RestoreFromState(::dcsctp::DcSctpSocketHandoverState const& state);
330
331 MCNAPI void $Shutdown();
332
333 MCNAPI void $Close();
334
335 MCNAPI ::dcsctp::SendStatus $Send(::dcsctp::DcSctpMessage message, ::dcsctp::SendOptions const& send_options);
336
337 MCNAPI ::std::vector<::dcsctp::SendStatus>
338 $SendMany(::rtc::ArrayView<::dcsctp::DcSctpMessage> messages, ::dcsctp::SendOptions const& send_options);
339
340 MCNAPI ::dcsctp::ResetStreamsStatus
341 $ResetStreams(::rtc::ArrayView<::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> const> outgoing_streams);
342
343 MCNAPI ::dcsctp::SocketState $state() const;
344
345 MCNAPI ::dcsctp::DcSctpOptions const& $options() const;
346
347 MCNAPI void $SetMaxMessageSize(uint64 max_message_size);
348
350 ::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id,
351 ::webrtc::StrongAlias<::dcsctp::StreamPriorityTag, ushort> priority
352 );
353
354 MCNAPI ::webrtc::StrongAlias<::dcsctp::StreamPriorityTag, ushort>
355 $GetStreamPriority(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const;
356
357 MCNAPI uint64 $buffered_amount(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const;
358
359 MCNAPI uint64 $buffered_amount_low_threshold(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id) const;
360
361 MCNAPI void
362 $SetBufferedAmountLowThreshold(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort> stream_id, uint64 bytes);
363
364 MCNAPI ::std::optional<::dcsctp::Metrics> $GetMetrics() const;
365
367
369
370 MCNAPI ::dcsctp::SctpImplementation $peer_implementation() const;
371 // NOLINTEND
372
373public:
374 // vftables
375 // NOLINTBEGIN
376 MCNAPI static void** $vftable();
377 // NOLINTEND
378};
379
380} // namespace dcsctp
Definition PacketObserver.h:14
Definition AnyDataChunk.h:18
Definition AnyForwardTsnChunk.h:16
Definition DcSctpMessage.h:7
Definition DcSctpSocketCallbacks.h:23
Definition DcSctpSocketInterface.h:27
Definition DcSctpSocket.h:43
MCAPI void $SetBufferedAmountLowThreshold(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort > stream_id, uint64 bytes)
MCAPI void HandleReconfig(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI bool Dispatch(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI::webrtc::TimeDelta OnShutdownTimerExpiry()
MCAPI void MaybeSendShutdownOnPacketReceived(::dcsctp::SctpPacket const &packet)
MCAPI void HandleInit(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void MaybeDeliverMessages()
MCAPI void HandleShutdownComplete(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void $Shutdown()
MCAPI void HandleForwardTsnCommon(::dcsctp::AnyForwardTsnChunk const &chunk)
MCAPI void OnSentPacket(::rtc::ArrayView< uchar const > packet, ::dcsctp::SendPacketStatus status)
MCAPI void $Connect()
MCAPI void HandleCookieAck(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
static MCAPI void ** $vftable()
MCAPI void HandleSack(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
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 void HandleHeartbeatAck(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void InternalClose(::dcsctp::ErrorKind error, ::std::string_view message)
MCAPI::webrtc::TimeDelta OnInitTimerExpiry()
MCAPI void HandleIData(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
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 void HandleForwardTsn(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI uint64 $buffered_amount(::webrtc::StrongAlias<::dcsctp::StreamIDTag, ushort > stream_id) const
MCAPI bool ValidateHasTCB()
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 SetState(::dcsctp::DcSctpSocket::State state, ::std::string_view reason)
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 HandleShutdown(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void HandleInitAck(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void HandleData(::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 HandleIForwardTsn(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
MCAPI void $SetMaxMessageSize(uint64 max_message_size)
MCAPI void $Close()
MCAPI void HandleHeartbeatRequest(::dcsctp::CommonHeader const &header, ::dcsctp::SctpPacket::ChunkDescriptor const &descriptor)
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:260
Definition StrongAlias.h:8
STL namespace.
Definition Capabilities.h:7
Definition CommonHeader.h:7
Definition DcSctpOptions.h:7
Definition DcSctpSocketHandoverState.h:7
Definition DcSctpSocket.h:51
Definition Metrics.h:7
Definition SendOptions.h:7
Definition Alias.h:14