|
Dreamine.Communication.Core 1.0.2
Dreamine.Communication.Core 통신 기능과 관련 API를 제공합니다.
|


Public 멤버 함수 | |
| ResilientMessageTransport (IMessageTransport innerTransport, ReconnectPolicy? reconnectPolicy=null, OutboundQueueOptions? queueOptions=null, IOutboundMessageQueue? outboundQueue=null) | |
| async Task | ConnectAsync (CancellationToken cancellationToken=default) |
| async Task | DisconnectAsync (CancellationToken cancellationToken=default) |
| async Task | SendAsync (MessageEnvelope message, CancellationToken cancellationToken=default) |
| async Task | FlushQueueAsync (CancellationToken cancellationToken=default) |
| async ValueTask | DisposeAsync () |
속성 | |
| TransportKind | Kind [get] |
| ConnectionState | State [get] |
| int | QueuedMessageCount [get] |
| bool | IsManualDisconnectRequested [get] |
| bool | IsResilienceLoopRequested [get] |
이벤트 | |
| EventHandler< MessageEnvelope >? | MessageReceived |
| EventHandler< ConnectionState >? | StateChanged |
| EventHandler< int >? | QueueCountChanged |
Private 멤버 함수 | |
| async Task | HandleDisconnectedSendAsync (MessageEnvelope message, CancellationToken cancellationToken) |
| async Task | WaitUntilConnectedAsync (CancellationToken cancellationToken) |
| void | EnsureResilienceLoopStarted () |
| async Task | RunResilienceLoopAsync (CancellationToken cancellationToken) |
| void | SetManualDisconnectRequested (bool value) |
| void | SetResilienceLoopRequested (bool value) |
| void | OnInnerMessageReceived (object? sender, MessageEnvelope message) |
| void | NotifyStateChangedIfNeeded () |
| void | NotifyQueueCountChanged () |
| void | ThrowIfDisposed () |
정적 Private 멤버 함수 | |
| static bool | IsOperationalState (ConnectionState state) |
| static async Task | DelaySafelyAsync (TimeSpan delay, CancellationToken cancellationToken) |
Private 속성 | |
| readonly IMessageTransport | _innerTransport |
| readonly ReconnectPolicy | _reconnectPolicy |
| readonly OutboundQueueOptions | _queueOptions |
| readonly IOutboundMessageQueue | _outboundQueue |
| readonly ReconnectDelayCalculator | _delayCalculator |
| readonly SemaphoreSlim | _flushLock = new(1, 1) |
| readonly object | _loopSync = new() |
| readonly object | _notifySync = new() |
| CancellationTokenSource | _lifetimeCts = new() |
| Task? | _resilienceLoopTask |
| int | _manualDisconnectRequested = 1 |
| int | _resilienceLoopRequested |
| int | _disposeGuard |
| bool | _disposed |
| ConnectionState | _lastNotifiedState = ConnectionState.Disconnected |
내부 메시지 전송 계층에 자동 재연결, 지수 백오프 및 연결 끊김 송신 큐를 추가합니다.
ResilientMessageTransport.cs 파일의 17 번째 라인에서 정의되었습니다.
|
inline |
내부 전송 계층과 선택적 복원·큐 설정으로 전송 계층을 초기화합니다.
| innerTransport | 실제 연결과 송수신을 담당할 전송 계층입니다. |
| reconnectPolicy | 재연결 간격과 횟수를 제어할 정책입니다. |
| queueOptions | 연결 끊김 송신 처리와 큐 제한 설정입니다. |
| outboundQueue | 사용자 지정 송신 큐이며, null이면 메모리 큐를 생성합니다. |
| ArgumentNullException | innerTransport 가 null인 경우 발생합니다. |
ResilientMessageTransport.cs 파일의 204 번째 라인에서 정의되었습니다.
다음을 참조함 : _delayCalculator, _innerTransport, _lastNotifiedState, _outboundQueue, _queueOptions, _reconnectPolicy, OnInnerMessageReceived(), State.

|
inline |
내부 연결과 필요 시 백그라운드 재연결 루프를 시작합니다.
| cancellationToken | 최초 연결과 큐 전송 취소 요청을 감시하는 토큰입니다. |
| ObjectDisposedException | 이미 해제된 경우 발생합니다. |
| OperationCanceledException | 작업 취소가 요청된 경우 발생할 수 있습니다. |
ResilientMessageTransport.cs 파일의 338 번째 라인에서 정의되었습니다.
다음을 참조함 : _innerTransport, _queueOptions, _reconnectPolicy, EnsureResilienceLoopStarted(), FlushQueueAsync(), NotifyStateChangedIfNeeded(), SetManualDisconnectRequested(), ThrowIfDisposed().

|
inlinestaticprivate |
최소 양수 시간 동안 대기하고 정상적인 취소 예외를 내부에서 처리합니다.
| delay | 대기할 시간입니다. |
| cancellationToken | 대기 취소 토큰입니다. |
ResilientMessageTransport.cs 파일의 1066 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : RunResilienceLoopAsync().

|
inline |
자동 재연결을 중지하고 내부 연결을 종료합니다.
| cancellationToken | 연결 해제 취소 요청을 감시하는 토큰입니다. |
| ObjectDisposedException | 이미 해제된 경우 발생합니다. |
| OperationCanceledException | 작업 취소가 요청된 경우 발생할 수 있습니다. |
ResilientMessageTransport.cs 파일의 410 번째 라인에서 정의되었습니다.
다음을 참조함 : _innerTransport, NotifyStateChangedIfNeeded(), SetManualDisconnectRequested(), SetResilienceLoopRequested(), ThrowIfDisposed().

|
inline |
재연결 루프를 중지하고 내부 전송 계층과 동기화 리소스를 비동기 해제합니다.
ResilientMessageTransport.cs 파일의 638 번째 라인에서 정의되었습니다.
다음을 참조함 : _disposed, _disposeGuard, _flushLock, _innerTransport, _lifetimeCts, _resilienceLoopTask, OnInnerMessageReceived(), SetManualDisconnectRequested(), SetResilienceLoopRequested().

|
inlineprivate |
자동 재연결이 활성화된 경우 복원 루프가 하나만 실행되도록 보장합니다.
ResilientMessageTransport.cs 파일의 801 번째 라인에서 정의되었습니다.
다음을 참조함 : _disposed, _lifetimeCts, _loopSync, _reconnectPolicy, _resilienceLoopTask, RunResilienceLoopAsync(), SetResilienceLoopRequested().
다음에 의해서 참조됨 : ConnectAsync(), FlushQueueAsync(), SendAsync(), WaitUntilConnectedAsync().


|
inline |
연결된 동안 만료되지 않은 송신 대기 메시지를 순서대로 전송합니다.
| cancellationToken | 큐 전송 취소 요청을 감시하는 토큰입니다. |
| ObjectDisposedException | 이미 해제된 경우 발생합니다. |
| OperationCanceledException | 작업 취소가 요청된 경우 발생할 수 있습니다. |
ResilientMessageTransport.cs 파일의 557 번째 라인에서 정의되었습니다.
다음을 참조함 : _flushLock, _innerTransport, _outboundQueue, _queueOptions, EnsureResilienceLoopStarted(), IsOperationalState(), NotifyQueueCountChanged(), NotifyStateChangedIfNeeded(), ThrowIfDisposed().
다음에 의해서 참조됨 : ConnectAsync(), RunResilienceLoopAsync().


|
inlineprivate |
연결 끊김 송신 정책에 따라 실패, 큐 저장 또는 연결 대기 후 송신을 수행합니다.
| message | 처리할 송신 메시지입니다. |
| cancellationToken | 비동기 처리 취소 토큰입니다. |
| InvalidOperationException | 정책이 즉시 실패이거나 알 수 없는 값인 경우 발생합니다. |
ResilientMessageTransport.cs 파일의 719 번째 라인에서 정의되었습니다.
다음을 참조함 : _innerTransport, _outboundQueue, _queueOptions, NotifyQueueCountChanged(), NotifyStateChangedIfNeeded(), WaitUntilConnectedAsync().
다음에 의해서 참조됨 : SendAsync().


|
inlinestaticprivate |
지정한 상태가 메시지 송신 가능한 연결 또는 수신 대기 상태인지 확인합니다.
| state | 검사할 연결 상태입니다. |
true입니다.ResilientMessageTransport.cs 파일의 965 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : FlushQueueAsync(), RunResilienceLoopAsync(), SendAsync(), WaitUntilConnectedAsync().

|
inlineprivate |
현재 송신 큐 개수로 큐 변경 이벤트를 발생시킵니다.
ResilientMessageTransport.cs 파일의 1149 번째 라인에서 정의되었습니다.
다음을 참조함 : _outboundQueue, QueueCountChanged.
다음에 의해서 참조됨 : FlushQueueAsync(), HandleDisconnectedSendAsync().

|
inlineprivate |
마지막 알림 이후 유효 연결 상태가 바뀐 경우에만 상태 변경 이벤트를 발생시킵니다.
ResilientMessageTransport.cs 파일의 1122 번째 라인에서 정의되었습니다.
다음을 참조함 : _lastNotifiedState, _notifySync, State, StateChanged.
다음에 의해서 참조됨 : ConnectAsync(), DisconnectAsync(), FlushQueueAsync(), HandleDisconnectedSendAsync(), RunResilienceLoopAsync(), SendAsync(), WaitUntilConnectedAsync().

|
inlineprivate |
내부 수신 이벤트를 현재 전송 계층의 수신 이벤트로 다시 발생시킵니다.
| sender | 내부 이벤트 발생 객체이며 사용하지 않습니다. |
| message | 수신한 메시지입니다. |
ResilientMessageTransport.cs 파일의 1109 번째 라인에서 정의되었습니다.
다음을 참조함 : MessageReceived.
다음에 의해서 참조됨 : DisposeAsync(), ResilientMessageTransport().

|
inlineprivate |
연결 감시, 재연결 백오프 및 큐 전송을 수행하는 백그라운드 루프를 실행합니다.
| cancellationToken | 루프 종료를 요청하는 토큰입니다. |
ResilientMessageTransport.cs 파일의 858 번째 라인에서 정의되었습니다.
다음을 참조함 : _delayCalculator, _innerTransport, _outboundQueue, _queueOptions, _reconnectPolicy, DelaySafelyAsync(), FlushQueueAsync(), IsManualDisconnectRequested, IsOperationalState(), NotifyStateChangedIfNeeded().
다음에 의해서 참조됨 : EnsureResilienceLoopStarted().


|
inline |
연결 상태와 끊김 송신 정책에 따라 즉시 전송하거나 큐에 저장합니다.
| message | 전송할 메시지입니다. |
| cancellationToken | 송신 또는 큐 저장 취소 요청을 감시하는 토큰입니다. |
| ArgumentNullException | message 가 null인 경우 발생합니다. |
| InvalidOperationException | 연결 끊김 정책이 즉시 실패이거나 지원하지 않는 경우 발생합니다. |
| ObjectDisposedException | 이미 해제된 경우 발생합니다. |
| OperationCanceledException | 작업 취소가 요청된 경우 발생할 수 있습니다. |
ResilientMessageTransport.cs 파일의 486 번째 라인에서 정의되었습니다.
다음을 참조함 : _innerTransport, EnsureResilienceLoopStarted(), HandleDisconnectedSendAsync(), IsOperationalState(), NotifyStateChangedIfNeeded(), SetManualDisconnectRequested(), ThrowIfDisposed().

|
inlineprivate |
수동 연결 해제 요청 플래그를 스레드 안전하게 설정합니다.
| value | 설정할 플래그 값입니다. |
ResilientMessageTransport.cs 파일의 1008 번째 라인에서 정의되었습니다.
다음을 참조함 : _manualDisconnectRequested.
다음에 의해서 참조됨 : ConnectAsync(), DisconnectAsync(), DisposeAsync(), SendAsync().

|
inlineprivate |
복원 루프 실행 요청 플래그를 스레드 안전하게 설정합니다.
| value | 설정할 플래그 값입니다. |
ResilientMessageTransport.cs 파일의 1029 번째 라인에서 정의되었습니다.
다음을 참조함 : _resilienceLoopRequested.
다음에 의해서 참조됨 : DisconnectAsync(), DisposeAsync(), EnsureResilienceLoopStarted().

|
inlineprivate |
전송 계층이 이미 해제되었으면 예외를 발생시킵니다.
| ObjectDisposedException | 인스턴스가 해제된 경우 발생합니다. |
ResilientMessageTransport.cs 파일의 1170 번째 라인에서 정의되었습니다.
다음을 참조함 : _disposed.
다음에 의해서 참조됨 : ConnectAsync(), DisconnectAsync(), FlushQueueAsync(), SendAsync().

|
inlineprivate |
복원 루프를 시작하고 내부 전송 계층이 연결될 때까지 비동기 대기합니다.
| cancellationToken | 대기 취소 토큰입니다. |
| OperationCanceledException | 취소가 요청된 경우 발생합니다. |
ResilientMessageTransport.cs 파일의 780 번째 라인에서 정의되었습니다.
다음을 참조함 : _innerTransport, _reconnectPolicy, EnsureResilienceLoopStarted(), IsOperationalState(), NotifyStateChangedIfNeeded().
다음에 의해서 참조됨 : HandleDisconnectedSendAsync().


|
private |
delay Calculator 값을 보관합니다.
ResilientMessageTransport.cs 파일의 63 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : ResilientMessageTransport(), RunResilienceLoopAsync().
|
private |
disposed 값을 보관합니다.
ResilientMessageTransport.cs 파일의 145 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DisposeAsync(), EnsureResilienceLoopStarted(), ThrowIfDisposed().
|
private |
dispose Guard 값을 보관합니다.
ResilientMessageTransport.cs 파일의 136 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DisposeAsync().
|
private |
flush Lock 값을 보관합니다.
ResilientMessageTransport.cs 파일의 72 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DisposeAsync(), FlushQueueAsync().
|
private |
inner Transport 값을 보관합니다.
ResilientMessageTransport.cs 파일의 27 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : ConnectAsync(), DisconnectAsync(), DisposeAsync(), FlushQueueAsync(), HandleDisconnectedSendAsync(), ResilientMessageTransport(), RunResilienceLoopAsync(), SendAsync(), WaitUntilConnectedAsync().
|
private |
last Notified State 값을 보관합니다.
ResilientMessageTransport.cs 파일의 154 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : NotifyStateChangedIfNeeded(), ResilientMessageTransport().
|
private |
lifetime Cts 값을 보관합니다.
ResilientMessageTransport.cs 파일의 100 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DisposeAsync(), EnsureResilienceLoopStarted().
|
private |
loop Sync 값을 보관합니다.
ResilientMessageTransport.cs 파일의 81 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : EnsureResilienceLoopStarted().
|
private |
manual Disconnect Requested 값을 보관합니다.
ResilientMessageTransport.cs 파일의 118 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : SetManualDisconnectRequested().
|
private |
notify Sync 값을 보관합니다.
ResilientMessageTransport.cs 파일의 90 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : NotifyStateChangedIfNeeded().
|
private |
outbound Queue 값을 보관합니다.
ResilientMessageTransport.cs 파일의 54 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : FlushQueueAsync(), HandleDisconnectedSendAsync(), NotifyQueueCountChanged(), ResilientMessageTransport(), RunResilienceLoopAsync().
|
private |
queue Options 값을 보관합니다.
ResilientMessageTransport.cs 파일의 45 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : ConnectAsync(), FlushQueueAsync(), HandleDisconnectedSendAsync(), ResilientMessageTransport(), RunResilienceLoopAsync().
|
private |
reconnect Policy 값을 보관합니다.
ResilientMessageTransport.cs 파일의 36 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : ConnectAsync(), EnsureResilienceLoopStarted(), ResilientMessageTransport(), RunResilienceLoopAsync(), WaitUntilConnectedAsync().
|
private |
resilience Loop Requested 값을 보관합니다.
ResilientMessageTransport.cs 파일의 127 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : SetResilienceLoopRequested().
|
private |
resilience Loop Task 값을 보관합니다.
ResilientMessageTransport.cs 파일의 109 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : DisposeAsync(), EnsureResilienceLoopStarted().
|
getprivate |
호출자가 수동 연결 해제를 요청했는지 스레드 안전하게 확인합니다.
ResilientMessageTransport.cs 파일의 978 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : RunResilienceLoopAsync().
|
getprivate |
연결 복원 루프 실행이 요청되었는지 스레드 안전하게 확인합니다.
ResilientMessageTransport.cs 파일의 989 번째 라인에서 정의되었습니다.
|
get |
내부 전송 계층의 전송 방식을 가져옵니다.
ResilientMessageTransport.cs 파일의 258 번째 라인에서 정의되었습니다.
|
get |
현재 송신 대기 큐에 저장된 메시지 수를 가져옵니다.
ResilientMessageTransport.cs 파일의 296 번째 라인에서 정의되었습니다.
|
get |
내부 상태와 재연결 루프를 반영한 현재 유효 연결 상태를 가져옵니다.
ResilientMessageTransport.cs 파일의 268 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : NotifyStateChangedIfNeeded(), ResilientMessageTransport().
| EventHandler<MessageEnvelope>? Dreamine.Communication.Core.Resilience.ResilientMessageTransport.MessageReceived |
내부 전송 계층이 메시지를 수신했을 때 발생합니다.
ResilientMessageTransport.cs 파일의 228 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : OnInnerMessageReceived().
| EventHandler<int>? Dreamine.Communication.Core.Resilience.ResilientMessageTransport.QueueCountChanged |
송신 대기 큐의 메시지 수가 변경될 때 발생합니다.
ResilientMessageTransport.cs 파일의 248 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : NotifyQueueCountChanged().
| EventHandler<ConnectionState>? Dreamine.Communication.Core.Resilience.ResilientMessageTransport.StateChanged |
복원 동작을 반영한 유효 연결 상태가 변경될 때 발생합니다.
ResilientMessageTransport.cs 파일의 238 번째 라인에서 정의되었습니다.
다음에 의해서 참조됨 : NotifyStateChangedIfNeeded().