Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
MsQuicAlpnHelper.cs
Go to the documentation of this file.
1
using
System.Buffers
;
2
using
System.Collections.Generic
;
3
using
System.Diagnostics.CodeAnalysis
;
4
using
System.Net.Security
;
5
6
namespace
System.Net.Quic.Implementations.MsQuic.Internal
;
7
8
internal
static
class
MsQuicAlpnHelper
9
{
10
public
unsafe
static
void
Prepare
(
List<SslApplicationProtocol>
alpnProtocols
, [NotNull]
out
MemoryHandle
[]
handles
, [NotNull]
out
MsQuicNativeMethods
.
QuicBuffer
[]
buffers
)
11
{
12
handles
=
ArrayPool<MemoryHandle>
.Shared.Rent(
alpnProtocols
.
Count
);
13
buffers
=
ArrayPool
<
MsQuicNativeMethods
.
QuicBuffer
>.Shared.Rent(
alpnProtocols
.
Count
);
14
try
15
{
16
for
(
int
i = 0; i <
alpnProtocols
.
Count
; i++)
17
{
18
ReadOnlyMemory<byte>
protocol
=
alpnProtocols
[i].Protocol;
19
MemoryHandle
memoryHandle
=
protocol
.Pin();
20
handles
[i] =
memoryHandle
;
21
buffers
[i].Buffer = (
byte
*)
memoryHandle
.Pointer;
22
buffers
[i].Length = (uint)
protocol
.Length;
23
}
24
}
25
catch
26
{
27
Return
(
ref
handles
,
ref
buffers
);
28
throw
;
29
}
30
}
31
32
public
static
void
Return
(
ref
MemoryHandle
[]
handles
,
ref
MsQuicNativeMethods
.
QuicBuffer
[]
buffers
)
33
{
34
MemoryHandle
[]
array
=
handles
;
35
if
(
array
!=
null
)
36
{
37
MemoryHandle
[]
array2
=
array
;
38
foreach
(
MemoryHandle
memoryHandle
in
array2
)
39
{
40
memoryHandle
.Dispose();
41
}
42
handles
=
null
;
43
ArrayPool<MemoryHandle>
.Shared.Return(
array
);
44
}
45
MsQuicNativeMethods
.
QuicBuffer
[]
array3
=
buffers
;
46
if
(
array3
!=
null
)
47
{
48
buffers
=
null
;
49
ArrayPool
<
MsQuicNativeMethods
.
QuicBuffer
>.Shared.Return(
array3
);
50
}
51
}
52
}
System.Buffers.ArrayPool
Definition
ArrayPool.cs:4
System.Collections.Generic.Dictionary.Count
int Count
Definition
Dictionary.cs:682
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
System.Net.Quic.Implementations.MsQuic.Internal.MsQuicAlpnHelper.Prepare
static unsafe void Prepare(List< SslApplicationProtocol > alpnProtocols, [NotNull] out MemoryHandle[] handles, [NotNull] out MsQuicNativeMethods.QuicBuffer[] buffers)
Definition
MsQuicAlpnHelper.cs:10
System.Net.Quic.Implementations.MsQuic.Internal.MsQuicAlpnHelper.Return
static void Return(ref MemoryHandle[] handles, ref MsQuicNativeMethods.QuicBuffer[] buffers)
Definition
MsQuicAlpnHelper.cs:32
System.Net.Quic.Implementations.MsQuic.Internal.MsQuicAlpnHelper
Definition
MsQuicAlpnHelper.cs:9
System.Net.Quic.Implementations.MsQuic.Internal.MsQuicNativeMethods
Definition
MsQuicNativeMethods.cs:6
System.Buffers
Definition
Base64.cs:7
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
System.Diagnostics.CodeAnalysis
Definition
AllowNullAttribute.cs:1
System.Net.Quic.Implementations.MsQuic.Internal
Definition
MsQuicAddressHelpers.cs:4
System.Net.Security
Definition
CertificateHelper.cs:4
System.ExceptionArgument.buffers
@ buffers
System.ExceptionArgument.array
@ array
System.Buffers.MemoryHandle
Definition
MemoryHandle.cs:6
System.Net.Quic.Implementations.MsQuic.Internal.MsQuicNativeMethods.QuicBuffer
Definition
MsQuicNativeMethods.cs:535
source
System.Net.Quic
System.Net.Quic.Implementations.MsQuic.Internal
MsQuicAlpnHelper.cs
Generated by
1.10.0