Dreamine.Communication.Core 1.0.2
Dreamine.Communication.Core 통신 기능과 관련 API를 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue 클래스 참조sealed

더 자세히 ...

Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue에 대한 상속 다이어그램 :
Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue에 대한 협력 다이어그램:

Public 멤버 함수

 InMemoryOutboundMessageQueue (OutboundQueueOptions? options=null)
ValueTask EnqueueAsync (QueuedOutboundMessage message, CancellationToken cancellationToken=default)
ValueTask EnqueueFrontAsync (QueuedOutboundMessage message, CancellationToken cancellationToken=default)
ValueTask< QueuedOutboundMessage?> TryDequeueAsync (CancellationToken cancellationToken=default)
void Clear ()

속성

int Count [get]

Private 멤버 함수

void EnsureCapacityForAddToBack ()
void EnsureCapacityForAddToFront ()

Private 속성

readonly object _sync = new()
readonly LinkedList< QueuedOutboundMessage_messages = new()
readonly OutboundQueueOptions _options

상세한 설명

연결이 끊긴 동안 송신 대기 메시지를 메모리에 순서대로 보관합니다.

InMemoryOutboundMessageQueue.cs 파일의 13 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ InMemoryOutboundMessageQueue()

Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue.InMemoryOutboundMessageQueue ( OutboundQueueOptions? options = null)
inline

지정한 용량 및 초과 처리 설정으로 메모리 큐를 초기화합니다.

매개변수
options큐 용량과 초과 처리 설정입니다. null이면 기본값을 사용합니다.
예외
ArgumentOutOfRangeException최대 큐 크기가 0 이하인 경우 발생합니다.

InMemoryOutboundMessageQueue.cs 파일의 67 번째 라인에서 정의되었습니다.

68 {
69 _options = options ?? new OutboundQueueOptions();
70
71 if (_options.MaxQueueSize <= 0)
72 {
73 throw new ArgumentOutOfRangeException(
74 nameof(options),
75 "MaxQueueSize must be greater than zero.");
76 }
77 }

다음을 참조함 : _options.

멤버 함수 문서화

◆ Clear()

void Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue.Clear ( )
inline

큐에 저장된 모든 메시지를 스레드 안전하게 제거합니다.

Dreamine.Communication.Core.Queues.IOutboundMessageQueue를 구현.

InMemoryOutboundMessageQueue.cs 파일의 301 번째 라인에서 정의되었습니다.

302 {
303 lock (_sync)
304 {
305 _messages.Clear();
306 }
307 }

다음을 참조함 : _messages, _sync.

◆ EnqueueAsync()

ValueTask Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue.EnqueueAsync ( QueuedOutboundMessage message,
CancellationToken cancellationToken = default )
inline

메시지를 큐 뒤쪽에 추가하며, 설정에 따라 가득 찬 큐의 가장 오래된 항목을 제거합니다.

매개변수
message저장할 송신 대기 메시지입니다.
cancellationToken추가 작업 취소 요청을 감시하는 토큰입니다.
반환값
완료된 비동기 추가 작업입니다.
예외
ArgumentNullExceptionmessagenull인 경우 발생합니다.
InvalidOperationException큐가 가득 찼고 오래된 메시지 제거가 비활성화된 경우 발생합니다.
OperationCanceledException작업 취소가 요청된 경우 발생합니다.

Dreamine.Communication.Core.Queues.IOutboundMessageQueue를 구현.

InMemoryOutboundMessageQueue.cs 파일의 154 번째 라인에서 정의되었습니다.

157 {
158 ArgumentNullException.ThrowIfNull(message);
159 cancellationToken.ThrowIfCancellationRequested();
160
161 lock (_sync)
162 {
163 EnsureCapacityForAddToBack();
164 _messages.AddLast(message);
165 }
166
167 return ValueTask.CompletedTask;
168 }

다음을 참조함 : _messages, _sync, EnsureCapacityForAddToBack().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ EnqueueFrontAsync()

ValueTask Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue.EnqueueFrontAsync ( QueuedOutboundMessage message,
CancellationToken cancellationToken = default )
inline

재시도할 메시지를 큐 앞쪽에 다시 추가하며 필요하면 뒤쪽 항목을 제거합니다.

매개변수
message큐 앞쪽에 다시 저장할 메시지입니다.
cancellationToken추가 작업 취소 요청을 감시하는 토큰입니다.
반환값
완료된 비동기 앞쪽 추가 작업입니다.
예외
ArgumentNullExceptionmessagenull인 경우 발생합니다.
InvalidOperationException큐가 가득 찼고 오래된 메시지 제거가 비활성화된 경우 발생합니다.
OperationCanceledException작업 취소가 요청된 경우 발생합니다.

Dreamine.Communication.Core.Queues.IOutboundMessageQueue를 구현.

InMemoryOutboundMessageQueue.cs 파일의 226 번째 라인에서 정의되었습니다.

229 {
230 ArgumentNullException.ThrowIfNull(message);
231 cancellationToken.ThrowIfCancellationRequested();
232
233 lock (_sync)
234 {
235 EnsureCapacityForAddToFront();
236 _messages.AddFirst(message);
237 }
238
239 return ValueTask.CompletedTask;
240 }

다음을 참조함 : _messages, _sync, EnsureCapacityForAddToFront().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ EnsureCapacityForAddToBack()

void Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue.EnsureCapacityForAddToBack ( )
inlineprivate

큐 뒤쪽에 항목을 추가할 공간을 확보하고 설정에 따라 가장 오래된 항목을 제거합니다.

예외
InvalidOperationException큐가 가득 찼고 항목 제거가 비활성화된 경우 발생합니다.

InMemoryOutboundMessageQueue.cs 파일의 325 번째 라인에서 정의되었습니다.

326 {
327 if (_messages.Count < _options.MaxQueueSize)
328 {
329 return;
330 }
331
332 if (!_options.DropOldestWhenFull)
333 {
334 throw new InvalidOperationException("Outbound message queue is full.");
335 }
336
337 _messages.RemoveFirst();
338 }

다음을 참조함 : _messages, _options.

다음에 의해서 참조됨 : EnqueueAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ EnsureCapacityForAddToFront()

void Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue.EnsureCapacityForAddToFront ( )
inlineprivate

큐 앞쪽에 항목을 추가할 공간을 확보하고 설정에 따라 가장 최근 항목을 제거합니다.

예외
InvalidOperationException큐가 가득 찼고 항목 제거가 비활성화된 경우 발생합니다.

InMemoryOutboundMessageQueue.cs 파일의 356 번째 라인에서 정의되었습니다.

357 {
358 if (_messages.Count < _options.MaxQueueSize)
359 {
360 return;
361 }
362
363 if (!_options.DropOldestWhenFull)
364 {
365 throw new InvalidOperationException("Outbound message queue is full.");
366 }
367
368 _messages.RemoveLast();
369 }

다음을 참조함 : _messages, _options.

다음에 의해서 참조됨 : EnqueueFrontAsync().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ TryDequeueAsync()

ValueTask< QueuedOutboundMessage?> Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue.TryDequeueAsync ( CancellationToken cancellationToken = default)
inline

큐에서 가장 오래된 메시지를 제거해 반환합니다.

매개변수
cancellationToken꺼내기 작업 취소 요청을 감시하는 토큰입니다.
반환값
제거한 메시지이며, 큐가 비어 있으면 null입니다.
예외
OperationCanceledException작업 취소가 요청된 경우 발생합니다.

Dreamine.Communication.Core.Queues.IOutboundMessageQueue를 구현.

InMemoryOutboundMessageQueue.cs 파일의 274 번째 라인에서 정의되었습니다.

276 {
277 cancellationToken.ThrowIfCancellationRequested();
278
279 lock (_sync)
280 {
281 if (_messages.First is null)
282 {
283 return ValueTask.FromResult<QueuedOutboundMessage?>(null);
284 }
285
286 var message = _messages.First.Value;
287 _messages.RemoveFirst();
288
289 return ValueTask.FromResult<QueuedOutboundMessage?>(message);
290 }
291 }

다음을 참조함 : _messages, _sync.

멤버 데이터 문서화

◆ _messages

readonly LinkedList<QueuedOutboundMessage> Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue._messages = new()
private

messages 값을 보관합니다.

InMemoryOutboundMessageQueue.cs 파일의 32 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Clear(), EnqueueAsync(), EnqueueFrontAsync(), EnsureCapacityForAddToBack(), EnsureCapacityForAddToFront(), TryDequeueAsync().

◆ _options

readonly OutboundQueueOptions Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue._options
private

options 값을 보관합니다.

InMemoryOutboundMessageQueue.cs 파일의 41 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : EnsureCapacityForAddToBack(), EnsureCapacityForAddToFront(), InMemoryOutboundMessageQueue().

◆ _sync

readonly object Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue._sync = new()
private

sync 값을 보관합니다.

InMemoryOutboundMessageQueue.cs 파일의 23 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : Clear(), EnqueueAsync(), EnqueueFrontAsync(), TryDequeueAsync().

속성 문서화

◆ Count

int Dreamine.Communication.Core.Queues.InMemoryOutboundMessageQueue.Count
get

현재 큐에 저장된 메시지 수를 스레드 안전하게 가져옵니다.

Dreamine.Communication.Core.Queues.IOutboundMessageQueue를 구현.

InMemoryOutboundMessageQueue.cs 파일의 87 번째 라인에서 정의되었습니다.

88 {
89 get
90 {
91 lock (_sync)
92 {
93 return _messages.Count;
94 }
95 }
96 }

이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: