コード例 #1
0
 public static void Process(AbstractDIMSE dimse, Association asc)
 {
     if (dimse is CEchoRequest)
     {
         asc.ServiceClass.DIMSEService.CEchoRequestReceivedAction(dimse as CEchoRequest, asc);
         asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     }
     if (dimse is CStoreRequest)
     {
         asc.ServiceClass.DIMSEService.CStoreService.OnRequestRecieved(dimse as CStoreRequest, asc);
         asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     }
     if (dimse is CMoveRequest)
     {
         asc.ServiceClass.DIMSEService.CMoveRequestReceivedAction(dimse as CMoveRequest, asc);
         asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     }
     if (dimse is CGetRequest)
     {
         asc.ServiceClass.DIMSEService.CGetRequestReceivedAction(dimse as CGetRequest, asc);
         asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     }
     //C-FIND
     if (dimse is CFindRequest)
     {
         asc.ServiceClass.DIMSEService.CFindService.OnRequestRecieved(dimse as CFindRequest, asc);
         asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     }
     if (dimse is CFindResponse)
     {
         asc.ServiceClass.DIMSEService.CFindService.OnResponseRecieved(dimse as CFindResponse, asc);
         asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     }
     if (dimse is CEchoResponse)
     {
         asc.ServiceClass.DIMSEService.CEchoResponseReceivedAction(dimse as CEchoResponse, asc);
         asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     }
     if (dimse is CStoreResponse)
     {
         asc.ServiceClass.DIMSEService.CStoreService.OnResponseRecieved(dimse as CStoreResponse, asc);
         asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     }
     if (dimse is CGetResponse)
     {
         asc.ServiceClass.DIMSEService.CGetResponseReceivedAction(dimse as CGetResponse, asc);
         asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     }
     if (dimse is CMoveResponse)
     {
         asc.ServiceClass.DIMSEService.CMoveResponseReceivedAction(dimse as CMoveResponse, asc);
         asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     }
 }
コード例 #2
0
        public static bool TryReadDIMSE(DICOMObject dcm, out AbstractDIMSE dimse)
        {
            dimse = null;
            var command      = dcm.FindFirst(TagHelper.CommandField) as UnsignedShort;
            var commandField = command != null ? (uint?)command.Data : null;

            if (commandField != null)
            {
                switch (commandField)
                {
                case (ushort)CommandField.C_ECHO_RQ:
                    dimse = ReadDIMSERequest <CEchoRequest>(dcm);
                    break;

                case (ushort)CommandField.C_ECHO_RP:
                    dimse = ReadDIMSEResponse <CEchoResponse>(dcm);
                    break;

                case (ushort)CommandField.C_STORE_RQ:
                    dimse = ReadDIMSERequest <CStoreRequest>(dcm);
                    break;

                case (ushort)CommandField.C_STORE_RP:
                    dimse = ReadDIMSEResponse <CStoreResponse>(dcm);
                    break;

                case (ushort)CommandField.C_FIND_RQ:
                    dimse = ReadDIMSERequest <CFindRequest>(dcm);
                    break;

                case (ushort)CommandField.C_FIND_RP:
                    dimse = ReadDIMSEResponse <CFindResponse>(dcm);
                    break;

                case (ushort)CommandField.C_MOVE_RQ:
                    dimse = ReadDIMSERequest <CMoveRequest>(dcm);
                    break;

                case (ushort)CommandField.C_MOVE_RP:
                    dimse = ReadDIMSEResponse <CMoveResponse>(dcm);
                    break;

                case (ushort)CommandField.C_GET_RQ:
                    dimse = ReadDIMSERequest <CGetRequest>(dcm);
                    break;

                case (ushort)CommandField.C_GET_RP:
                    dimse = ReadDIMSEResponse <CGetResponse>(dcm);
                    break;
                }
                return(true);
            }
            return(false);
        }
コード例 #3
0
 public static void Process(AbstractDIMSE dimse, Association asc)
 {
     asc.State = NetworkState.TRANSPORT_CONNECTION_OPEN;
     if (dimse is CEchoRequest)
     {
         asc.ServiceClass.DIMSEService.CEchoRequestReceivedAction(dimse as CEchoRequest, asc);
     }
     if (dimse is CStoreRequest)
     {
         asc.ServiceClass.DIMSEService.CStoreService.OnRequestRecieved(dimse as CStoreRequest, asc);
     }
     if (dimse is CMoveRequest)
     {
         asc.ServiceClass.DIMSEService.CMoveRequestReceivedAction(dimse as CMoveRequest, asc);
     }
     if (dimse is CGetRequest)
     {
         asc.ServiceClass.DIMSEService.CGetRequestReceivedAction(dimse as CGetRequest, asc);
     }
     //C-FIND
     if (dimse is CFindRequest)
     {
         asc.ServiceClass.DIMSEService.CFindService.OnRequestRecieved(dimse as CFindRequest, asc);
     }
     if (dimse is CFindResponse)
     {
         asc.ServiceClass.DIMSEService.CFindService.OnResponseRecieved(dimse as CFindResponse, asc);
     }
     if (dimse is CEchoResponse)
     {
         asc.ServiceClass.DIMSEService.CEchoResponseReceivedAction(dimse as CEchoResponse, asc);
     }
     if (dimse is CStoreResponse)
     {
         asc.ServiceClass.DIMSEService.CStoreService.OnResponseRecieved(dimse as CStoreResponse, asc);
     }
     if (dimse is CGetResponse)
     {
         asc.ServiceClass.DIMSEService.CGetResponseReceivedAction(dimse as CGetResponse, asc);
     }
     if (dimse is CMoveResponse)
     {
         asc.ServiceClass.DIMSEService.CMoveResponseReceivedAction(dimse as CMoveResponse, asc);
     }
     if (dimse is NActionRequest)
     {
         asc.ServiceClass.DIMSEService.NActionService.OnRequestReceived(dimse as NActionRequest, asc);
     }
     if (dimse is NActionResponse)
     {
         asc.ServiceClass.DIMSEService.NActionService.OnResponseReceived(dimse as NActionResponse, asc);
     }
     if (dimse is NEventReportRequest)
     {
         asc.ServiceClass.DIMSEService.NEventReportService.OnRequestReceived(dimse as NEventReportRequest, asc);
     }
     if (dimse is NEventReportResponse)
     {
         asc.ServiceClass.DIMSEService.NEventReportService.OnResponseReceived(dimse as NEventReportResponse, asc);
     }
     //If status is Pending...we need to open the reader to keep reading
     if (dimse is AbstractDIMSEResponse)
     {
         if ((dimse as AbstractDIMSEResponse).Status == (ushort)Status.PENDING)
         {
             asc.State = NetworkState.ASSOCIATION_ESTABLISHED_WAITING_ON_DATA;
         }
     }
 }
コード例 #4
0
ファイル: DIMSEReader.cs プロジェクト: zzti/Evil-DICOM
        public static bool TryReadDIMSE(DICOMObject dcm, out AbstractDIMSE dimse)
        {
            dimse = null;
            try
            {
                var command      = dcm.FindFirst(TagHelper.CommandField) as UnsignedShort;
                var commandField = command != null ? (uint?)command.Data : null;
                if (commandField != null)
                {
                    switch (commandField)
                    {
                    case (ushort)CommandField.C_ECHO_RQ:
                        dimse = ReadDIMSERequest <CEchoRequest>(dcm);
                        break;

                    case (ushort)CommandField.C_ECHO_RP:
                        dimse = ReadDIMSEResponse <CEchoResponse>(dcm);
                        break;

                    case (ushort)CommandField.C_STORE_RQ:
                        dimse = ReadDIMSERequest <CStoreRequest>(dcm);
                        break;

                    case (ushort)CommandField.C_STORE_RP:
                        dimse = ReadDIMSEResponse <CStoreResponse>(dcm);
                        break;

                    case (ushort)CommandField.C_FIND_RQ:
                        dimse = ReadDIMSERequest <CFindRequest>(dcm);
                        break;

                    case (ushort)CommandField.C_FIND_RP:
                        dimse = ReadDIMSEResponse <CFindResponse>(dcm);
                        break;

                    case (ushort)CommandField.C_MOVE_RQ:
                        dimse = ReadDIMSERequest <CMoveRequest>(dcm);
                        break;

                    case (ushort)CommandField.C_MOVE_RP:
                        dimse = ReadDIMSEResponse <CMoveResponse>(dcm);
                        break;

                    case (ushort)CommandField.C_GET_RQ:
                        dimse = ReadDIMSERequest <CGetRequest>(dcm);
                        break;

                    case (ushort)CommandField.C_GET_RP:
                        dimse = ReadDIMSEResponse <CGetResponse>(dcm);
                        break;

                    case (ushort)CommandField.N_ACTION_RQ:
                        dimse = ReadDIMSERequest <NActionRequest>(dcm);
                        break;

                    case (ushort)CommandField.N_ACTION_RP:
                        dimse = ReadDIMSEResponse <NActionResponse>(dcm);
                        break;

                    case (ushort)CommandField.N_EVENT_REPORT_RQ:
                        dimse = ReadDIMSERequest <NEventReportRequest>(dcm);
                        break;

                    case (ushort)CommandField.N_EVENT_REPORT_RP:
                        dimse = ReadDIMSEResponse <NEventReportResponse>(dcm);
                        break;
                    }
                    return(true);
                }
                else
                {
                    return(false);
                }                      // No command field
            }
            catch (Exception e)
            {
                return(false);
            }
        }