// 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 void DoCStore(ActiveAssociation activeAssociation, IDimse request, IDicomCommand responseCommand) { request.ReadDataset(); // read out DataSet, if any throw defEx; }
protected virtual DataSet DoNSet(ActiveAssociation assoc, IDimse request, IDicomCommand rspCmd) { request.ReadDataset(); // read out DataSet, if any throw defEx; }
protected virtual void DoAfterRsp(ActiveAssociation assoc, IDimse rsp) { }
protected virtual void DoCEcho(ActiveAssociation assoc, IDimse request, IDicomCommand rspCmd) { // request.getDataset(); // read out DataSet throw defEx; }
public virtual void NSet(ActiveAssociation assoc, IDimse request) { IDicomCommand requestCmd = request.DicomCommand; IDicomCommand rspCmd = _dcmObjectFactory.NewCommand(); rspCmd.InitNSetRSP(requestCmd.MessageID, requestCmd.RequestedSOPClassUniqueId, requestCmd.RequestedSOPInstanceUniqueId, Success); DataSet rspData = null; try { rspData = DoNSet(assoc, request, rspCmd); } catch (DcmServiceException e) { e.WriteTo(rspCmd); } IDimse rsp = _associationFactory.NewDimse(request.PresentationContextId(), rspCmd, rspData); assoc.Association.Write(rsp); DoAfterRsp(assoc, rsp); }
public virtual void CMove(ActiveAssociation assoc, IDimse request) { IDicomCommand requestCmd = request.DicomCommand; IDicomCommand rspCmd = _dcmObjectFactory.NewCommand(); rspCmd.InitCMoveRSP(requestCmd.MessageID, requestCmd.AffectedSOPClassUniqueId, Pending); try { DoMultiRsp(assoc, request, rspCmd, DoCMove(assoc, request, rspCmd)); } catch (DcmServiceException e) { e.WriteTo(rspCmd); IDimse rsp = _associationFactory.NewDimse(request.PresentationContextId(), rspCmd); assoc.Association.Write(rsp); DoAfterRsp(assoc, rsp); } }
public virtual void CEcho(ActiveAssociation assoc, IDimse request) { IDicomCommand requestCmd = request.DicomCommand; IDicomCommand rspCmd = _dcmObjectFactory.NewCommand(); rspCmd.InitCEchoRSP(requestCmd.MessageID, requestCmd.AffectedSOPClassUniqueId, Success); try { DoCEcho(assoc, request, rspCmd); } catch (DcmServiceException e) { Logger.Error(e); e.WriteTo(rspCmd); } IDimse rsp = _associationFactory.NewDimse(request.PresentationContextId(), rspCmd); assoc.Association.Write(rsp); DoAfterRsp(assoc, rsp); }
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(); } }
public override void CFind(ActiveAssociation assoc, IDimse request) { base.CFind(assoc, request); }