コード例 #1
0
ファイル: DimseWriter.cs プロジェクト: sleighter/dicom-sharp
 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();
     }
 }