// Private ------------------------------------------------------- private void DoMultiRsp(ActiveAssociation assoc, IDimse request, IDicomCommand rspCmd, IMultiDimseRsp mdr) { try { assoc.AddCancelListener(rspCmd.MessageIDToBeingRespondedTo, mdr.CancelListener); do { DataSet rspData = mdr.Next(assoc, request, rspCmd); IDimse rsp = _associationFactory.NewDimse(request.PresentationContextId(), rspCmd, rspData); assoc.Association.Write(rsp); DoAfterRsp(assoc, rsp); } while (rspCmd.IsPending()); } finally { mdr.Release(); } }
protected override void DoCEcho(ActiveAssociation assoc, IDimse request, IDicomCommand rspCmd) { rspCmd.PutUS(Tags.Status, Success); }
protected virtual DataSet DoNSet(ActiveAssociation assoc, IDimse request, IDicomCommand rspCmd) { request.ReadDataset(); // read out DataSet, if any throw defEx; }
protected virtual void DoCStore(ActiveAssociation activeAssociation, IDimse request, IDicomCommand responseCommand) { request.ReadDataset(); // read out DataSet, if any throw defEx; }
protected virtual void DoCEcho(ActiveAssociation assoc, IDimse request, IDicomCommand rspCmd) { // request.getDataset(); // read out DataSet throw defEx; }
public virtual IDimse NewDimse(int presentationContextId, IDicomCommand dicomCommand, DataSet dataSet) { return new Dimse(presentationContextId, dicomCommand, dataSet, null); }
protected override void DoCStore(ActiveAssociation activeAssociation, IDimse request, IDicomCommand responseCommand) { IDicomCommand requestCommand = request.DicomCommand; Stream inputStream = request.DataAsStream; try { String instanceUniqueId = requestCommand.AffectedSOPInstanceUniqueId; String classUniqueId = requestCommand.AffectedSOPClassUniqueId; DcmDecodeParam decParam = DcmDecodeParam.ValueOf(request.TransferSyntaxUniqueId); DataSet dataSet = _dcmObjectFactory.NewDataset(); DcmParser parser = parserFactory.NewDcmParser(inputStream); parser.DcmHandler = dataSet.DcmHandler; parser.ParseDataset(decParam, Tags.PixelData); dataSet.FileMetaInfo = _dcmObjectFactory.NewFileMetaInfo(classUniqueId, instanceUniqueId, request.TransferSyntaxUniqueId); FileInfo file = ToFile(dataSet); StoreToFile(parser, dataSet, file, (DcmEncodeParam) decParam); responseCommand.PutUS(Tags.Status, SUCCESS); } catch (Exception e) { Logger.Error(e.Message, e); throw new DcmServiceException(PROCESSING_FAILURE, e); } finally { inputStream.Close(); } }