public void OnRequestReceived(NActionRequest req, Association asc) { //Find it var txId = req.Data.GetSelector().TransactionUID.Data; var found = new List <DICOMObject>(); var toFind = req.Data.GetSelector().ReferencedSOPSequence; foreach (var item in toFind.Items) { var sopClass = item.GetSelector().ReferencedSOPClassUID.Data; var sopInstance = item.GetSelector().ReferencedSOPInstanceUID.Data; //If found, add to found list if (Find(sopClass, sopInstance)) { found.Add(item); } } //Send N-EVENT-REPORT-RQ var nReq = new NEventReportRequest(); nReq.AffectedSOPClassUID = req.RequestedSOPClassUID; nReq.MessageID = req.MessageID; nReq.AffectedSOPInstanceUID = req.RequestedSOPInstanceUID; nReq.EventTypeId = req.ActionTypeID; var data = new DICOMObject(DICOMForge.TransactionUID(txId), DICOMForge.ReferencedSOPSequence(found.ToArray())); nReq.Data = data; asc.OutboundMessages.Enqueue(nReq); }
private async Task PerformStorageCommitment(NActionRequest req, Association asc) { asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN; // Don't read stream...Wait for task to complete asc.Logger.LogInformation("Delaying 1.5 seconds to perform Storage Commitment Query..."); await Task.Delay(1500); _dms.StorageCommitmentService.OnRequestReceived(req, asc); }
public void OnRequestReceived(NActionRequest req, Association asc) { asc.Logger.LogInformation("<-- DIMSE" + req.GetLogString()); req.LogData(asc); asc.LastActive = DateTime.Now; var resp = new NActionResponse(req, Status.SUCCESS); _dms.RaiseDIMSERequestReceived(req, asc); //STORAGE COMMITMENT PUSH if (req.RequestedSOPClassUID == AbstractSyntax.StorageCommitment_Push) { resp.Status = (ushort)Status.SUCCESS; PDataMessenger.Send(resp, asc); PerformStorageCommitment(req, asc); } else { //Abstract syntax not supported resp.Status = (ushort)Status.FAILURE_UNABLE_TO_PROCESS; PDataMessenger.Send(resp, asc); } }