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

더 자세히 ...

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

Public 멤버 함수

 TransportMessageBusAdapter (IMessageTransport transport)
Task ConnectAsync (CancellationToken cancellationToken=default)
Task PublishAsync (MessageEnvelope message, CancellationToken cancellationToken=default)
Task SubscribeAsync (string route, Func< MessageEnvelope, CancellationToken, Task > handler, CancellationToken cancellationToken=default)
Task DisconnectAsync (CancellationToken cancellationToken=default)
void Dispose ()
async ValueTask DisposeAsync ()

속성

Action< Exception, string >? OnHandlerError [get, set]
ConnectionState State [get]
TransportKind Kind [get]

Private 멤버 함수

async void OnMessageReceived (object? sender, MessageEnvelope message)

Private 속성

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

상세한 설명

메시지 전송 계층을 발행·구독 메시지 버스로 사용할 수 있게 변환합니다.

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

생성자 & 소멸자 문서화

◆ TransportMessageBusAdapter()

Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.TransportMessageBusAdapter ( IMessageTransport transport)
inline

지정한 메시지 전송 계층으로 어댑터를 초기화합니다.

매개변수
transport연결과 송수신을 담당할 내부 전송 계층입니다.
예외
ArgumentNullExceptiontransportnull인 경우 발생합니다.

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

76 {
77 _transport = transport ?? throw new ArgumentNullException(nameof(transport));
78 _transport.MessageReceived += OnMessageReceived;
79 }

다음을 참조함 : _transport, OnMessageReceived().

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

멤버 함수 문서화

◆ ConnectAsync()

Task Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.ConnectAsync ( CancellationToken cancellationToken = default)
inline

내부 전송 계층에 비동기적으로 연결합니다.

매개변수
cancellationToken연결 취소 요청을 감시하는 토큰입니다.
반환값
내부 전송 계층의 비동기 연결 작업입니다.

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

126 {
127 return _transport.ConnectAsync(cancellationToken);
128 }

다음을 참조함 : _transport.

◆ DisconnectAsync()

Task Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.DisconnectAsync ( CancellationToken cancellationToken = default)
inline

내부 전송 계층의 연결을 비동기적으로 해제합니다.

매개변수
cancellationToken연결 해제 취소 요청을 감시하는 토큰입니다.
반환값
내부 전송 계층의 비동기 연결 해제 작업입니다.

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

288 {
289 return _transport.DisconnectAsync(cancellationToken);
290 }

다음을 참조함 : _transport.

◆ Dispose()

void Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.Dispose ( )
inline

이벤트 구독을 해제하고 내부 전송 계층의 비동기 해제를 대기하지 않고 시작합니다.

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

301 {
302 _transport.MessageReceived -= OnMessageReceived;
303 _ = _transport.DisposeAsync().AsTask();
304 }

다음을 참조함 : _transport, OnMessageReceived().

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

◆ DisposeAsync()

async ValueTask Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.DisposeAsync ( )
inline

이벤트 구독과 내부 전송 계층 리소스를 비동기적으로 해제합니다.

반환값
비동기 해제 작업입니다.

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

323 {
324 _transport.MessageReceived -= OnMessageReceived;
325 await _transport.DisposeAsync().ConfigureAwait(false);
326 }

다음을 참조함 : _transport, OnMessageReceived().

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

◆ OnMessageReceived()

async void Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.OnMessageReceived ( object? sender,
MessageEnvelope message )
inlineprivate

내부 전송 계층에서 수신한 메시지를 해당 라우트에 등록된 처리기들에게 비동기적으로 전달합니다.

매개변수
sender메시지 수신 이벤트를 발생시킨 객체입니다. 이 구현에서는 사용하지 않습니다.
message등록된 처리기들에게 전달할 수신 메시지입니다.

이벤트 처리기 시그니처 때문에 async void를 사용합니다. 처리기 예외는 외부로 전파하지 않고 OnHandlerError 콜백으로 전달합니다.

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

361 {
362 try
363 {
364 if (!_handlers.TryGetValue(message.Route, out var handlers))
365 {
366 return;
367 }
368
369 List<Func<MessageEnvelope, CancellationToken, Task>> snapshot;
370
371 lock (handlers)
372 {
373 snapshot = new List<Func<MessageEnvelope, CancellationToken, Task>>(handlers);
374 }
375
376 foreach (var handler in snapshot)
377 {
378 await handler(message, CancellationToken.None).ConfigureAwait(false);
379 }
380 }
381 catch (Exception ex)
382 {
383 // Event dispatchers cannot propagate async-void exceptions.
384 // Delegate to caller-supplied handler so failures are observable.
385 // 이벤트 디스패처는 async void 예외를 전파할 수 없습니다.
386 // 호출자가 OnHandlerError를 설정하면 실패를 관찰할 수 있습니다.
387 OnHandlerError?.Invoke(ex, message.Route);
388 }
389 }

다음을 참조함 : _handlers, OnHandlerError.

다음에 의해서 참조됨 : Dispose(), DisposeAsync(), TransportMessageBusAdapter().

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

◆ PublishAsync()

Task Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.PublishAsync ( MessageEnvelope message,
CancellationToken cancellationToken = default )
inline

내부 전송 계층을 통해 메시지를 비동기적으로 발행합니다.

매개변수
message발행할 메시지입니다.
cancellationToken발행 취소 요청을 감시하는 토큰입니다.
반환값
내부 전송 계층의 비동기 송신 작업입니다.
예외
ArgumentNullExceptionmessagenull인 경우 발생합니다.

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

173 {
174 ArgumentNullException.ThrowIfNull(message);
175 return _transport.SendAsync(message, cancellationToken);
176 }

다음을 참조함 : _transport.

◆ SubscribeAsync()

Task Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.SubscribeAsync ( string route,
Func< MessageEnvelope, CancellationToken, Task > handler,
CancellationToken cancellationToken = default )
inline

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

매개변수
route구독할 라우트입니다.
handler수신 메시지를 처리할 비동기 대리자입니다.
cancellationToken구독 취소 요청을 감시하는 토큰입니다.
반환값
완료된 비동기 구독 작업입니다.
예외
ArgumentExceptionroute 가 비어 있는 경우 발생합니다.
ArgumentNullExceptionhandlernull인 경우 발생합니다.
OperationCanceledException작업 취소가 요청된 경우 발생합니다.

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

246 {
247 ArgumentException.ThrowIfNullOrWhiteSpace(route);
248 ArgumentNullException.ThrowIfNull(handler);
249 cancellationToken.ThrowIfCancellationRequested();
250
251 var handlers = _handlers.GetOrAdd(
252 route,
253 _ => new List<Func<MessageEnvelope, CancellationToken, Task>>());
254
255 lock (handlers)
256 {
257 handlers.Add(handler);
258 }
259
260 return Task.CompletedTask;
261 }

다음을 참조함 : _handlers.

멤버 데이터 문서화

◆ _handlers

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

handlers 값을 보관합니다.

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

다음에 의해서 참조됨 : OnMessageReceived(), SubscribeAsync().

◆ _transport

readonly IMessageTransport Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter._transport
private

transport 값을 보관합니다.

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

다음에 의해서 참조됨 : ConnectAsync(), DisconnectAsync(), Dispose(), DisposeAsync(), PublishAsync(), TransportMessageBusAdapter().

속성 문서화

◆ Kind

TransportKind Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.Kind
get

내부 전송 계층의 전송 방식을 가져옵니다.

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

◆ OnHandlerError

Action<Exception, string>? Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.OnHandlerError
getset

메시지 처리기에서 예상하지 못한 예외가 발생할 때 호출할 콜백을 가져오거나 설정합니다. 기본값은 null입니다.

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

49{ get; set; }

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

◆ State

ConnectionState Dreamine.Communication.Core.Adapters.TransportMessageBusAdapter.State
get

내부 전송 계층의 현재 연결 상태를 가져옵니다.

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


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