public override void Start() { _settings = new DicomSendSettings(); _maxNumberOfRetries = _settings.RetryCount; _retryDelayUnit = _settings.RetryDelayUnits; _retryDelayValue = _settings.RetryDelay; UpdateMaxRetryDelayValue(); base.Start(); }
public override void Process() { DicomServerConfiguration configuration = GetServerConfiguration(); var remoteAE = ServerDirectory.GetRemoteServerByName(Request.DestinationServerName); if (remoteAE == null) { Proxy.Fail(string.Format("Unknown destination: {0}", Request.DestinationServerName), WorkItemFailureType.Fatal); return; } if (AutoRoute != null && Proxy.Item.Priority != WorkItemPriorityEnum.Stat) { DateTime now = Platform.Time; DateTime scheduledTime = AutoRoute.GetScheduledTime(now, 0); if (now != scheduledTime) { Proxy.Postpone(); Platform.Log(LogLevel.Info, "Rescheduling AutoRoute WorkItem {0} back into the scheduled time window: {1}", Proxy.Item.Oid, Proxy.Item.ProcessTime); return; } } _scu = new ImageViewerStorageScu(configuration.AETitle, remoteAE); LoadImagesToSend(); if (Request.CompressionType != CompressionType.None) { _scu.LoadPreferredSyntaxes(Request); } Progress.TotalImagesToSend = _scu.TotalSubOperations; Progress.FailureSubOperations = 0; Progress.WarningSubOperations = 0; Progress.SuccessSubOperations = 0; Progress.IsCancelable = true; Proxy.UpdateProgress(); _scu.ImageStoreCompleted += OnImageSent; _scu.DoSend(); if (_scu.Canceled) { if (StopPending) { Proxy.Postpone(); } else { Proxy.Cancel(); } } else if (_scu.Failed || _scu.FailureSubOperations > 0) { var settings = new DicomSendSettings(); TimeSpan delay = settings.RetryDelayUnits == RetryDelayTimeUnit.Seconds ? TimeSpan.FromSeconds(settings.RetryDelay) : TimeSpan.FromMinutes(settings.RetryDelay); Proxy.Fail(_scu.FailureDescription, WorkItemFailureType.NonFatal, AutoRoute != null ? AutoRoute.GetScheduledTime(Platform.Time, (int)delay.TotalSeconds) : Platform.Time.Add(delay), settings.RetryCount); } else { Proxy.Complete(); } }