protected internal override void PostResponse(DicomService service, DicomResponse response) { try { if (OnResponseReceived != null) OnResponseReceived(this, (DicomCEchoResponse)response); } catch { } }
internal override void PostResponse(DicomService service, DicomResponse response) { try { if (OnResponseReceived != null) { OnResponseReceived(this, (DicomCMoveResponse)response); } } catch (System.Exception ex) { Log.LogManager.GetLogger("Dicom.Network").Error("", ex.Message, ex.Source, ex.StackTrace); } }
public async Task SendingLargeFileUsingVeryShortResponseTimeoutAndSendingTakesTooLongShouldFail() { var port = Ports.GetNext(); using (CreateServer <InMemoryDicomCStoreProvider>(port)) { var client = CreateClient(port); client.Options.RequestTimeout = TimeSpan.FromSeconds(1); client.Options.MaxPDULength = 16 * 1024; TimeSpan streamWriteTimeout = TimeSpan.FromMilliseconds(1500); client.NetworkManager = new ConfigurableNetworkManager(() => Thread.Sleep(streamWriteTimeout)); DicomResponse response = null; DicomRequest.OnTimeoutEventArgs onTimeoutEventArgs = null; // Size = 5 192 KB, one PDU = 16 KB, so this will result in 325 PDUs // If stream timeout = 1500ms, then total time to send will be 325 * 1500 = 487.5 seconds var request = new DicomCStoreRequest(@"./Test Data/10200904.dcm") { OnResponseReceived = (req, res) => response = res, OnTimeout = (sender, args) => onTimeoutEventArgs = args }; RequestTimedOutEventArgs eventArgsFromDicomClientRequestTimedOut = null; client.RequestTimedOut += (sender, args) => eventArgsFromDicomClientRequestTimedOut = args; await client.AddRequestAsync(request).ConfigureAwait(false); var sendTask = client.SendAsync(); var sendTimeoutCancellationTokenSource = new CancellationTokenSource(); var sendTimeout = Task.Delay(TimeSpan.FromSeconds(10), sendTimeoutCancellationTokenSource.Token); var winner = await Task.WhenAny(sendTask, sendTimeout).ConfigureAwait(false); sendTimeoutCancellationTokenSource.Cancel(); sendTimeoutCancellationTokenSource.Dispose(); Assert.Same(winner, sendTask); Assert.Null(response); Assert.NotNull(onTimeoutEventArgs); Assert.NotNull(eventArgsFromDicomClientRequestTimedOut); Assert.Equal(request, eventArgsFromDicomClientRequestTimedOut.Request); Assert.Equal(client.Options.RequestTimeout, eventArgsFromDicomClientRequestTimedOut.Timeout); } }
public override Task OnRequestCompletedAsync(DicomRequest request, DicomResponse response) { _pendingRequests.TryRemove(request.MessageID, out DicomRequest _); if (_pendingRequests.IsEmpty) { if (_dicomClient.QueuedRequests.IsEmpty) { _allRequestsHaveCompletedTaskCompletionSource.TrySetResultAsynchronously(new AllRequestsHaveCompletedEvent()); } else { _sendMoreRequests.Set(); } } return(CompletedTaskProvider.CompletedTask); }
public async Task SendingLargeFileUsingVeryShortResponseTimeoutShouldSucceed() { var port = Ports.GetNext(); using (CreateServer <InMemoryDicomCStoreProvider>(port)) { var client = CreateClient(port); client.Options.RequestTimeout = TimeSpan.FromSeconds(2); client.Options.MaxPDULength = 16 * 1024; // 16 KB TimeSpan streamWriteTimeout = TimeSpan.FromMilliseconds(10); client.NetworkManager = new ConfigurableNetworkManager(() => Thread.Sleep(streamWriteTimeout)); DicomResponse response = null; // Size = 5 192 KB, one PDU = 16 KB, so this will result in 325 PDUs // If stream timeout = 50ms, then total time to send will be 3s 250ms var request = new DicomCStoreRequest(@"./Test Data/10200904.dcm") { OnResponseReceived = (req, res) => response = res, }; await client.AddRequestAsync(request).ConfigureAwait(false); var sendTask = client.SendAsync(); var sendTimeoutCancellationTokenSource = new CancellationTokenSource(); var sendTimeout = Task.Delay(TimeSpan.FromSeconds(10), sendTimeoutCancellationTokenSource.Token); var winner = await Task.WhenAny(sendTask, sendTimeout).ConfigureAwait(false); sendTimeoutCancellationTokenSource.Cancel(); sendTimeoutCancellationTokenSource.Dispose(); Assert.Equal(winner, sendTask); Assert.NotNull(response); Assert.Equal(DicomStatus.Success, response.Status); } }
public async Task SendingLargeFileUsingVeryShortResponseTimeoutShouldSucceed() { var port = Ports.GetNext(); using (CreateServer <InMemoryDicomCStoreProvider>(port)) { var streamWriteTimeout = TimeSpan.FromMilliseconds(10); var clientFactory = CreateClientFactory(new ConfigurableNetworkManager(() => Thread.Sleep(streamWriteTimeout))); var client = clientFactory.Create("127.0.0.1", port, false, "SCU", "ANY-SCP"); client.Logger = _logger.IncludePrefix(typeof(DicomClient).Name).WithMinimumLevel(LogLevel.Debug); client.ServiceOptions.RequestTimeout = TimeSpan.FromSeconds(2); client.ServiceOptions.MaxPDULength = 16 * 1024; // 16 KB DicomResponse response = null; // Size = 5 192 KB, one PDU = 16 KB, so this will result in 325 PDUs // If stream timeout = 50ms, then total time to send will be 3s 250ms var request = new DicomCStoreRequest(TestData.Resolve("10200904.dcm")) { OnResponseReceived = (req, res) => response = res, }; await client.AddRequestAsync(request).ConfigureAwait(false); var sendTask = client.SendAsync(); var sendTimeoutCancellationTokenSource = new CancellationTokenSource(); var sendTimeout = Task.Delay(TimeSpan.FromSeconds(10), sendTimeoutCancellationTokenSource.Token); var winner = await Task.WhenAny(sendTask, sendTimeout).ConfigureAwait(false); sendTimeoutCancellationTokenSource.Cancel(); sendTimeoutCancellationTokenSource.Dispose(); Assert.Equal(winner, sendTask); Assert.NotNull(response); Assert.Equal(DicomStatus.Success, response.Status); } }
public Task OnRequestCompletedAsync(DicomRequest request, DicomResponse response) { return(CompletedTaskProvider.CompletedTask); }
public abstract Task OnRequestCompletedAsync(DicomRequest request, DicomResponse response);
public override Task OnRequestCompletedAsync(DicomRequest request, DicomResponse response) { RemoveRequestFromPendingList(request); return(CompletedTaskProvider.CompletedTask); }
internal Task OnRequestCompletedAsync(DicomRequest request, DicomResponse response) => State.OnRequestCompletedAsync(request, response);
public Task OnRequestCompletedAsync(DicomRequest request, DicomResponse response) => Task.CompletedTask;
public Task OnRequestCompletedAsync(DicomRequest request, DicomResponse response) { return(DicomClient.OnRequestCompletedAsync(request, response)); }