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; } }
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); }
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; } } }
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); } }