Exemplo n.º 1
0
 public void Write(Dimse dimse)
 {
     lock(this)
     {
         pcid = dimse.pcid();
         System.String tsUID = fsm.GetAcceptedTransferSyntaxUID(pcid);
         if (tsUID == null)
         {
             throw new System.SystemException();
         }
         ((Dimse) dimse).TransferSyntaxUID = tsUID;
         fsm.FireWrite(dimse);
         if (pDataTF == null)
         {
             pDataTF = new PDataTF(fsm.WriteMaxLength);
         }
         pDataTF.OpenPDV(pcid, cmd = true);
         Stream outs = new PDataTFOutputStream(this);
         Command c = dimse.Command;
         try
         {
             c.Write(outs);
         }
         finally
         {
             outs.Close();
         }
         if (c.HasDataset())
         {
             pDataTF.OpenPDV(pcid, cmd = false);
             outs = new PDataTFOutputStream(this);
             try
             {
                 dimse.WriteTo(outs, tsUID);
             }
             finally
             {
                 outs.Close();
             }
         }
         FlushPDataTF();
     }
 }
Exemplo n.º 2
0
 // Private -------------------------------------------------------
 private void DoMultiRsp(ActiveAssociation assoc, Dimse rq, Command rspCmd, MultiDimseRsp mdr)
 {
     try
     {
         assoc.AddCancelListener(rspCmd.MessageIDToBeingRespondedTo, mdr.CancelListener);
         do
         {
             Dataset rspData = mdr.next(assoc, rq, rspCmd);
             Dimse rsp = assocFact.NewDimse(rq.pcid(), rspCmd, rspData);
             assoc.Association.Write(rsp);
             DoAfterRsp(assoc, rsp);
         }
         while (rspCmd.IsPending());
     }
     finally
     {
         mdr.release();
     }
 }
Exemplo n.º 3
0
 public virtual void c_store(ActiveAssociation assoc, Dimse rq)
 {
     Command rqCmd = rq.Command;
     Command rspCmd = objFact.NewCommand();
     rspCmd.InitCStoreRSP(rqCmd.MessageID, rqCmd.AffectedSOPClassUID, rqCmd.AffectedSOPInstanceUID, SUCCESS);
     try
     {
         DoCStore(assoc, rq, rspCmd);
     }
     catch (DcmServiceException e)
     {
         e.WriteTo(rspCmd);
     }
     Dimse rsp = assocFact.NewDimse(rq.pcid(), rspCmd);
     assoc.Association.Write(rsp);
     DoAfterRsp(assoc, rsp);
 }
Exemplo n.º 4
0
 public virtual void n_set(ActiveAssociation assoc, Dimse rq)
 {
     Command rqCmd = rq.Command;
     Command rspCmd = objFact.NewCommand();
     rspCmd.InitNSetRSP(rqCmd.MessageID, rqCmd.RequestedSOPClassUID, rqCmd.RequestedSOPInstanceUID, SUCCESS);
     Dataset rspData = null;
     try
     {
         rspData = DoNSet(assoc, rq, rspCmd);
     }
     catch (DcmServiceException e)
     {
         e.WriteTo(rspCmd);
     }
     Dimse rsp = assocFact.NewDimse(rq.pcid(), rspCmd, rspData);
     assoc.Association.Write(rsp);
     DoAfterRsp(assoc, rsp);
 }
Exemplo n.º 5
0
 public virtual void c_move(ActiveAssociation assoc, Dimse rq)
 {
     Command rqCmd = rq.Command;
     Command rspCmd = objFact.NewCommand();
     rspCmd.InitCMoveRSP(rqCmd.MessageID, rqCmd.AffectedSOPClassUID, PENDING);
     try
     {
         DoMultiRsp(assoc, rq, rspCmd, DoCMove(assoc, rq, rspCmd));
     }
     catch (DcmServiceException e)
     {
         e.WriteTo(rspCmd);
         Dimse rsp = assocFact.NewDimse(rq.pcid(), rspCmd);
         assoc.Association.Write(rsp);
         DoAfterRsp(assoc, rsp);
     }
 }