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

더 자세히 ...

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

Public 멤버 함수

void Register (string route, Func< MessageEnvelope, CancellationToken, Task > handler)
bool Unregister (string route, Func< MessageEnvelope, CancellationToken, Task > handler)
async Task RouteAsync (MessageEnvelope message, CancellationToken cancellationToken=default)
void Clear ()

Private 속성

readonly ConcurrentDictionary< string, List< Func< MessageEnvelope, CancellationToken, Task > > > _handlers = new()

상세한 설명

메시지 라우트별로 등록된 비동기 처리기를 실행하는 기본 라우터입니다.

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

멤버 함수 문서화

◆ Clear()

void Dreamine.Communication.Core.Routing.MessageRouter.Clear ( )
inline

모든 라우트에서 등록된 메시지 처리기를 제거합니다.

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

243 {
244 _handlers.Clear();
245 }

다음을 참조함 : _handlers.

◆ Register()

void Dreamine.Communication.Core.Routing.MessageRouter.Register ( string route,
Func< MessageEnvelope, CancellationToken, Task > handler )
inline

지정한 라우트에 비동기 메시지 처리기를 등록합니다.

매개변수
route처리기를 연결할 라우트입니다.
handler메시지를 처리할 비동기 대리자입니다.
예외
ArgumentExceptionroute 가 비어 있는 경우 발생합니다.
ArgumentNullExceptionhandlernull인 경우 발생합니다.

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

74 {
75 ArgumentException.ThrowIfNullOrWhiteSpace(route);
76 ArgumentNullException.ThrowIfNull(handler);
77
78 var handlers = _handlers.GetOrAdd(
79 route,
80 _ => new List<Func<MessageEnvelope, CancellationToken, Task>>());
81
82 lock (handlers)
83 {
84 handlers.Add(handler);
85 }
86 }

다음을 참조함 : _handlers.

◆ RouteAsync()

async Task Dreamine.Communication.Core.Routing.MessageRouter.RouteAsync ( MessageEnvelope message,
CancellationToken cancellationToken = default )
inline

메시지 라우트에 등록된 모든 처리기를 순서대로 비동기 실행합니다.

매개변수
message라우팅할 메시지입니다.
cancellationToken처리기 실행 취소 요청을 감시하는 토큰입니다.
반환값
모든 일치 처리기의 비동기 실행 작업입니다.
예외
ArgumentNullExceptionmessagenull인 경우 발생합니다.
OperationCanceledException작업 취소가 요청된 경우 발생합니다.

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

212 {
213 ArgumentNullException.ThrowIfNull(message);
214
215 if (!_handlers.TryGetValue(message.Route, out var handlers))
216 {
217 return;
218 }
219
220 List<Func<MessageEnvelope, CancellationToken, Task>> snapshot;
221
222 lock (handlers)
223 {
224 snapshot = new List<Func<MessageEnvelope, CancellationToken, Task>>(handlers);
225 }
226
227 foreach (var handler in snapshot)
228 {
229 cancellationToken.ThrowIfCancellationRequested();
230 await handler(message, cancellationToken).ConfigureAwait(false);
231 }
232 }

다음을 참조함 : _handlers.

◆ Unregister()

bool Dreamine.Communication.Core.Routing.MessageRouter.Unregister ( string route,
Func< MessageEnvelope, CancellationToken, Task > handler )
inline

지정한 라우트에서 특정 메시지 처리기를 제거합니다.

매개변수
route처리기가 등록된 라우트입니다.
handler제거할 처리기입니다.
반환값
처리기를 찾아 제거했으면 true입니다.
예외
ArgumentExceptionroute 가 비어 있는 경우 발생합니다.
ArgumentNullExceptionhandlernull인 경우 발생합니다.

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

139 {
140 ArgumentException.ThrowIfNullOrWhiteSpace(route);
141 ArgumentNullException.ThrowIfNull(handler);
142
143 if (!_handlers.TryGetValue(route, out var handlers))
144 {
145 return false;
146 }
147
148 lock (handlers)
149 {
150 var removed = handlers.Remove(handler);
151
152 if (handlers.Count == 0)
153 {
154 _handlers.TryRemove(route, out _);
155 }
156
157 return removed;
158 }
159 }

다음을 참조함 : _handlers.

멤버 데이터 문서화

◆ _handlers

readonly ConcurrentDictionary<string, List<Func<MessageEnvelope, CancellationToken, Task> > > Dreamine.Communication.Core.Routing.MessageRouter._handlers = new()
private

handlers 값을 보관합니다.

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

다음에 의해서 참조됨 : Clear(), Register(), RouteAsync(), Unregister().


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