Dreamine.Communication.Core
1.0.2
Dreamine.Communication.Core 통신 기능과 관련 API를 제공합니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
RawAvailableMessageFrameCodec.cs
이 파일의 문서화 페이지로 가기
1
using
System.Buffers;
2
3
namespace
Dreamine.Communication.Core.Framing
;
4
21
public
sealed
class
RawAvailableMessageFrameCodec
:
IMessageFrameCodec
22
{
31
private
readonly
int
_bufferSize
;
32
41
public
RawAvailableMessageFrameCodec
()
42
: this(8192)
43
{
44
}
45
70
public
RawAvailableMessageFrameCodec
(
int
bufferSize)
71
{
72
if
(bufferSize <= 0)
73
{
74
throw
new
ArgumentOutOfRangeException(nameof(bufferSize));
75
}
76
77
_bufferSize
= bufferSize;
78
}
79
136
public
async Task
WriteFrameAsync
(
137
Stream stream,
138
byte
[] payload,
139
CancellationToken cancellationToken =
default
)
140
{
141
ArgumentNullException.ThrowIfNull(stream);
142
ArgumentNullException.ThrowIfNull(payload);
143
144
await stream.WriteAsync(payload, cancellationToken).ConfigureAwait(
false
);
145
await stream.FlushAsync(cancellationToken).ConfigureAwait(
false
);
146
}
147
196
public
async Task<byte[]?>
ReadFrameAsync
(
197
Stream stream,
198
CancellationToken cancellationToken =
default
)
199
{
200
ArgumentNullException.ThrowIfNull(stream);
201
202
var buffer = ArrayPool<byte>.Shared.Rent(
_bufferSize
);
203
204
try
205
{
206
var read = await stream.ReadAsync(
207
buffer.AsMemory(0,
_bufferSize
),
208
cancellationToken)
209
.ConfigureAwait(
false
);
210
211
if
(read == 0)
212
{
213
return
null
;
214
}
215
216
var payload =
new
byte
[read];
217
Buffer.BlockCopy(buffer, 0, payload, 0, read);
218
219
return
payload;
220
}
221
finally
222
{
223
ArrayPool<byte>.Shared.Return(buffer);
224
}
225
}
226
}
Dreamine.Communication.Core.Framing
Definition
DelimiterMessageFrameCodec.cs:4
Dreamine.Communication.Core.Framing.IMessageFrameCodec
Definition
IMessageFrameCodec.cs:16
Dreamine.Communication.Core.Framing.RawAvailableMessageFrameCodec.WriteFrameAsync
async Task WriteFrameAsync(Stream stream, byte[] payload, CancellationToken cancellationToken=default)
Definition
RawAvailableMessageFrameCodec.cs:136
Dreamine.Communication.Core.Framing.RawAvailableMessageFrameCodec.RawAvailableMessageFrameCodec
RawAvailableMessageFrameCodec()
Definition
RawAvailableMessageFrameCodec.cs:41
Dreamine.Communication.Core.Framing.RawAvailableMessageFrameCodec.ReadFrameAsync
async Task< byte[]?> ReadFrameAsync(Stream stream, CancellationToken cancellationToken=default)
Definition
RawAvailableMessageFrameCodec.cs:196
Dreamine.Communication.Core.Framing.RawAvailableMessageFrameCodec._bufferSize
readonly int _bufferSize
Definition
RawAvailableMessageFrameCodec.cs:31
Dreamine.Communication.Core.Framing.RawAvailableMessageFrameCodec.RawAvailableMessageFrameCodec
RawAvailableMessageFrameCodec(int bufferSize)
Definition
RawAvailableMessageFrameCodec.cs:70
Framing
RawAvailableMessageFrameCodec.cs
다음에 의해 생성됨 :
1.17.0