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