Exemplo n.º 1
0
 /// <summary>
 /// <see cref="ISniffer.ReceiveMessage"/>
 /// </summary>
 public ReceivedMsgReturnCode ReceiveMessage(out DvtkData.Message message)
 {
     message = null;
     Wrappers.ReceivedMsgReturnCode wrappersReceiveReturnCode =
         (this.m_adaptee as Wrappers.MSnifferSession).ReceiveMessage(out message);
     return(_Convert(wrappersReceiveReturnCode));
 }
Exemplo n.º 2
0
        protected override void Execute()
        {
            // loop through all associations
            // Get all kind of DICOM messages from the sniffer file stream.
            DvtkData.Message            message                 = null;
            DvtkData.Dimse.DicomMessage lastMessage             = null;
            DvtkData.Dul.AcceptedPresentationContextList accPCs = null;
            ReceivedMsgReturnCode retcode = ReceivedMsgReturnCode.Failure;

            retcode = dvtkSnifferSession.ReceiveMessage(out message);
            try
            {
                while ((retcode == ReceivedMsgReturnCode.Success) && (message != null))
                {
                    // DicomMessage needs to be validated against a definition file and VR.
                    ValidationControlFlags validationFlags = ValidationControlFlags.None;
                    validationFlags |= ValidationControlFlags.UseDefinitions;
                    validationFlags |= ValidationControlFlags.UseValueRepresentations;

                    if (message is DvtkData.Dul.DulMessage)
                    {
                        //Extract Calling/Called AE Title from received message and save is to
                        // Dvtk Script session
                        if (message is DvtkData.Dul.A_ASSOCIATE_RQ)
                        {
                            DvtkData.Dul.A_ASSOCIATE_RQ assocReq = (DvtkData.Dul.A_ASSOCIATE_RQ)message;
                            Options.DvtkScriptSession.DvtSystemSettings.AeTitle = assocReq.CalledAETitle;
                            Options.DvtkScriptSession.SutSystemSettings.AeTitle = assocReq.CallingAETitle;
                        }

                        if (message is DvtkData.Dul.A_ASSOCIATE_AC)
                        {
                            DvtkData.Dul.A_ASSOCIATE_AC assocAcc = (DvtkData.Dul.A_ASSOCIATE_AC)message;
                            Options.DvtkScriptSession.DvtSystemSettings.AeTitle = assocAcc.CallingAETitle;
                            Options.DvtkScriptSession.SutSystemSettings.AeTitle = assocAcc.CalledAETitle;
                            accPCs = assocAcc.PresentationContexts;
                        }

                        Options.DvtkScriptSession.Validate(message as DvtkData.Dul.DulMessage, null, validationFlags);
                    }
                    else
                    {
                        DvtkData.Dimse.DicomMessage dimseMsg = (DvtkData.Dimse.DicomMessage)message;
                        if (dimseMsg.CommandField == DvtkData.Dimse.DimseCommand.CFINDRQ)
                        {
                            lastMessage = dimseMsg;
                        }

                        foreach (DvtkData.Dul.AcceptedPresentationContext acc in accPCs)
                        {
                            if ((acc.Result == 0) && (acc.ID == dimseMsg.EncodedPresentationContextID))
                            {
                                if (acc.TransferSyntax != DvtkData.Dul.TransferSyntax.Implicit_VR_Little_Endian)
                                {
                                    Options.DvtkScriptSession.IsDataTransferExplicit = true;
                                }
                                else
                                {
                                    Options.DvtkScriptSession.IsDataTransferExplicit = false;
                                }
                                break;
                            }
                        }

                        if ((dimseMsg.CommandField == DvtkData.Dimse.DimseCommand.CFINDRSP) && (lastMessage != null))
                        {
                            Options.DvtkScriptSession.Validate(dimseMsg, null, lastMessage, validationFlags);
                        }
                        else
                        {
                            Options.DvtkScriptSession.Validate(dimseMsg, null, validationFlags);
                        }
                    }

                    message = null;
                    retcode = dvtkSnifferSession.ReceiveMessage(out message);
                    if ((retcode == ReceivedMsgReturnCode.IncompleteByteStream) && (message == null))
                    {
                        string msg = string.Format("Incomplete byte stream, unable to perform further validation, see {0} for detail logging in {1} directory.", (associationName + ".log"), this.Options.ResultsDirectory);
                        WriteHtmlInformation("<b><br />");
                        WriteInformation(msg);
                        WriteHtmlInformation("</b><br />");
                    }
                }
            }
            catch (Exception except)
            {
                string msg = string.Format("Validation error: {0}\n", except.Message);
                MessageBox.Show(msg, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            //again set the original directory
            dvtkSnifferSession.DataDirectory = orgDataDir;
        }
Exemplo n.º 3
0
 /// <summary>
 /// <see cref="ISniffer.ReceiveMessage(out DvtkData.Message)"/>
 /// </summary>
 public bool ReceiveMessage(out DvtkData.Message message)
 {
     message = null;
     return((this.m_adaptee as Wrappers.MSnifferSession).ReceiveMessage(out message));
 }