Esempio n. 1
0
        public static Task <IDicomClientState> TransitionToRequestAssociationState(this DicomClient dicomClient, IDicomClientConnection connection,
                                                                                   DicomClientCancellation cancellation)
        {
            var requestAssociationParameters = new DicomClientRequestAssociationState.InitialisationParameters(connection);
            var requestAssociationState      = new DicomClientRequestAssociationState(dicomClient, requestAssociationParameters);

            return(dicomClient.Transition(requestAssociationState, cancellation));
        }
Esempio n. 2
0
        public static Task <IDicomClientState> TransitionToCompletedWithErrorState(this DicomClient dicomClient,
                                                                                   IDicomClientConnection connection,
                                                                                   Exception exception, DicomClientCancellation cancellation)
        {
            var completedWithErrorParameters = connection == null
                ? new DicomClientCompletedState.DicomClientCompletedWithErrorInitialisationParameters(exception)
                : new DicomClientCompletedState.DicomClientCompletedWithErrorInitialisationParameters(exception, connection);
            var completedWithErrorState = new DicomClientCompletedState(dicomClient, completedWithErrorParameters);

            return(dicomClient.Transition(completedWithErrorState, cancellation));
        }
Esempio n. 3
0
 public static Task <IDicomClientState> TransitionToCompletedWithErrorState(this DicomClient dicomClient,
                                                                            IInitialisationWithConnectionParameters parameters,
                                                                            Exception exception, DicomClientCancellation cancellation) =>
 TransitionToCompletedWithErrorState(dicomClient, parameters.Connection, exception, cancellation);
Esempio n. 4
0
        public static Task <IDicomClientState> TransitionToReleaseAssociationState(this DicomClient dicomClient,
                                                                                   IInitialisationWithAssociationParameters parameters, DicomClientCancellation cancellation)
        {
            var releaseAssociationParameters = new DicomClientReleaseAssociationState.InitialisationParameters(parameters.Association, parameters.Connection);
            var releaseAssociationState      = new DicomClientReleaseAssociationState(dicomClient, releaseAssociationParameters);

            return(dicomClient.Transition(releaseAssociationState, cancellation));
        }
Esempio n. 5
0
        public static Task <IDicomClientState> TransitionToLingerState(this DicomClient dicomClient,
                                                                       IInitialisationWithAssociationParameters parameters, DicomClientCancellation cancellation)
        {
            var lingerParameters = new DicomClientLingeringState.InitialisationParameters(parameters.Association, parameters.Connection);
            var lingerState      = new DicomClientLingeringState(dicomClient, lingerParameters);

            return(dicomClient.Transition(lingerState, cancellation));
        }
Esempio n. 6
0
        public static Task <IDicomClientState> TransitionToSendingRequestsState(this DicomClient dicomClient, IInitialisationWithConnectionParameters parameters,
                                                                                DicomAssociation association, DicomClientCancellation cancellation)
        {
            var sendingRequestsParameters = new DicomClientSendingRequestsState.InitialisationParameters(association, parameters.Connection);
            var sendingRequestsState      = new DicomClientSendingRequestsState(dicomClient, sendingRequestsParameters);

            return(dicomClient.Transition(sendingRequestsState, cancellation));
        }
Esempio n. 7
0
 public static Task <IDicomClientState> TransitionToSendingRequestsState(this DicomClient dicomClient,
                                                                         IInitialisationWithAssociationParameters parameters, DicomClientCancellation cancellation) =>
 TransitionToSendingRequestsState(dicomClient, parameters, parameters.Association, cancellation);
Esempio n. 8
0
 public static Task <IDicomClientState> TransitionToRequestAssociationState(this DicomClient dicomClient, IInitialisationWithConnectionParameters parameters,
                                                                            DicomClientCancellation cancellation) =>
 TransitionToRequestAssociationState(dicomClient, parameters.Connection, cancellation);
Esempio n. 9
0
        public static Task <IDicomClientState> TransitionToConnectState(this DicomClient dicomClient, DicomClientCancellation cancellation)
        {
            var connectState = new DicomClientConnectState(dicomClient);

            return(dicomClient.Transition(connectState, cancellation));
        }
Esempio n. 10
0
        public static Task <IDicomClientState> TransitionToIdleState(this DicomClient dicomClient, DicomClientCancellation cancellation)
        {
            var idleState = new DicomClientIdleState(dicomClient);

            return(dicomClient.Transition(idleState, cancellation));
        }
Esempio n. 11
0
 public async Task SendAsync(CancellationToken cancellationToken          = default(CancellationToken),
                             DicomClientCancellationMode cancellationMode = DicomClientCancellationMode.ImmediatelyReleaseAssociation)
 {
     var cancellation = new DicomClientCancellation(cancellationToken, cancellationMode);
     await State.SendAsync(cancellation).ConfigureAwait(false);
 }
Esempio n. 12
0
        internal async Task <IDicomClientState> Transition(IDicomClientState newState, DicomClientCancellation cancellation)
        {
            Task InternalTransition()
            {
                var oldState = State;

                Logger.Debug($"[{oldState}] --> [{newState}]");

                oldState.Dispose();

                State = newState ?? throw new ArgumentNullException(nameof(newState));

                StateChanged?.Invoke(this, new StateChangedEventArgs(oldState, newState));

                return(Task.CompletedTask);
            }

            await ExecuteWithinTransitionLock(InternalTransition).ConfigureAwait(false);

            return(await newState.GetNextStateAsync(cancellation).ConfigureAwait(false));
        }