Ejemplo n.º 1
0
        /// <summary>
        /// Constructor.
        ///
        /// Use this constructor to create a new presentation context instance that is to be used in an A-ASSOCIATE-RQ.
        /// </summary>
        /// <param name="abstractSyntax">The abstract syntax.</param>
        /// <param name="transferSyntaxes">The transfer syntaxes (must contain at least one transfer syntax).</param>
        /// <exception cref="System.ArgumentException">No transfer syntaxes have been supplied.</exception>
        public PresentationContext(String abstractSyntax, params String[] transferSyntaxes)
        {
            //
            // Check parameter(s).
            //

            if (transferSyntaxes.Length < 1)
            {
                throw new System.ArgumentException("At least of transfer syntax must be supplied in the PresentationContext constructor.");
            }


            //
            // Create the encapsulated DvtkData instance.
            //

            DvtkData.Dul.AbstractSyntax dvtkDataAbstractSyntax = new DvtkData.Dul.AbstractSyntax(abstractSyntax);

            DvtkData.Dul.TransferSyntax[] dvtkDataTransferSyntaxes = new DvtkData.Dul.TransferSyntax[transferSyntaxes.Length];
            for (int index = 0; index < transferSyntaxes.Length; index++)
            {
                dvtkDataTransferSyntaxes[index] = new DvtkData.Dul.TransferSyntax(transferSyntaxes[index]);
            }

            this.dvtkDataRequestedPresentationContext = new DvtkData.Dul.RequestedPresentationContext(dvtkDataAbstractSyntax, dvtkDataTransferSyntaxes);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Sends an A-ASSOCIATE-RQ.
        /// </summary>
        /// <param name="presentationContexts">One or more PresentationContext objects.</param>
        /// <returns>The sent A-ASSOCIATE-RQ</returns>
        /// <exception cref="System.Exception">
        ///	One or more of the supplied presentation contexts is an A_ASSOCIATE_AC presentation 
        /// context or sending of the A-ASSOCIATE-RQ fails.
        /// </exception> 
        /// <example>
        ///		<b>VB.NET</b>
        ///		<code>
        /// 			<include file='Doc\VisualBasicExamples.xml' path='Examples/Example[@name="IncludesDicomThreadScu"]' />
        /// 			<include file='Doc\VisualBasicExamples.xml' path='Examples/Example[@name="DicomThreadScu"]' />
        /// 			<include file='Doc\VisualBasicExamples.xml' path='Examples/Example[@name="Main"]' />		
        ///		</code>
        /// </example>		
        protected internal AssociateRq SendAssociateRq(params PresentationContext[] presentationContexts)
        {
            AssociateRq associateRq = null;

            // Create a DvtkData ASSOCIATE request and set default values.
            DvtkData.Dul.A_ASSOCIATE_RQ dvtkDataAssociateRq = new DvtkData.Dul.A_ASSOCIATE_RQ();
            dvtkDataAssociateRq.CallingAETitle = Options.LocalAeTitle;
            dvtkDataAssociateRq.CalledAETitle = Options.RemoteAeTitle;
            dvtkDataAssociateRq.UserInformation.MaximumLength.MaximumLengthReceived = Options.LocalMaximumLength;
            dvtkDataAssociateRq.UserInformation.ImplementationClassUid.UID = Options.LocalImplementationClassUid;
            dvtkDataAssociateRq.UserInformation.ImplementationVersionName.Name = Options.LocalImplementationVersionName;

            // Parse all parameters.
            foreach (PresentationContext presentationContext in presentationContexts)
            {
                if (!presentationContext.IsForAssociateRequest)
                {
                    throw new System.Exception("Error while interpreting parameters for PresentationContext");
                }

                DvtkData.Dul.RequestedPresentationContext requestedPresentationContext = new DvtkData.Dul.RequestedPresentationContext();

                requestedPresentationContext.AbstractSyntax = new DvtkData.Dul.AbstractSyntax(presentationContext.AbstractSyntax);

                foreach (String transferSyntax in presentationContext.TransferSyntaxes)
                {
                    requestedPresentationContext.AddTransferSyntaxes(new DvtkData.Dul.TransferSyntax(transferSyntax));
                }

                dvtkDataAssociateRq.AddPresentationContexts(requestedPresentationContext);
            }

            associateRq = new AssociateRq(dvtkDataAssociateRq);

            SendMessage(associateRq);

            hasOpenConnection = true;

            return (associateRq);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Send a A-ASSOCIATE-RQ.
        /// </summary>
        /// <param name="presentationContexts">One or more PresentationContext objects.</param>
        /// <returns>The A-ASSOCIATE-RQ</returns>
        public AssociateRq SendAssociateRq(params PresentationContext[] presentationContexts)
        {
            // Start Interface logging.
            // InterfaceLogging.Start(this);

            AssociateRq associateRq = null;

            // Create a DvtkData ASSOCIATE request and set default values.
            DvtkData.Dul.A_ASSOCIATE_RQ dvtkDataAssociateRq  = new DvtkData.Dul.A_ASSOCIATE_RQ();
            dvtkDataAssociateRq.CallingAETitle = DvtkScriptSession.DvtSystemSettings.AeTitle;
            dvtkDataAssociateRq.CalledAETitle = DvtkScriptSession.SutSystemSettings.AeTitle;
            dvtkDataAssociateRq.UserInformation.MaximumLength.MaximumLengthReceived = Convert.ToUInt32(16384);
            dvtkDataAssociateRq.UserInformation.ImplementationClassUid.UID = "100.118.116.2003.1.4";

            // Parse all parameters.
            foreach(PresentationContext presentationContext in presentationContexts)
            {
                if (!presentationContext.InterpretAsPcForAssociateRq())
                {
                    DvtkHighLevelInterfaceException.Throw("Error while interpreting parameters for PresentationContext");
                }

                DvtkData.Dul.RequestedPresentationContext requestedPresentationContext = new DvtkData.Dul.RequestedPresentationContext();

                requestedPresentationContext.AbstractSyntax = new DvtkData.Dul.AbstractSyntax(presentationContext.SopClass);

                foreach (String transferSyntax in presentationContext.TransferSyntaxes)
                {
                    requestedPresentationContext.AddTransferSyntaxes(new DvtkData.Dul.TransferSyntax(transferSyntax));
                }

                dvtkDataAssociateRq.AddPresentationContexts(requestedPresentationContext);
            }

            Dvtk.Sessions.SendReturnCode sendReturnCode = DvtkScriptSession.Send(dvtkDataAssociateRq);

            if (sendReturnCode != Dvtk.Sessions.SendReturnCode.Success)
            {
                DvtkHighLevelInterfaceException.Throw("Error sending associate request (" + sendReturnCode.ToString() + ")");
            }
            else
            {
                associateRq = new AssociateRq(dvtkDataAssociateRq);

                associateRq.IsSend = true;
                ThreadManager.DataWarehouse.AddMessage(this, associateRq);
            }

            // End Interface logging.
            // InterfaceLogging.End(associateRq);

            return(associateRq);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Constructor.
 ///
 /// Use this constructor to encapsulate an existing DvtkData RequestedPresentationContext instance.
 /// </summary>
 /// <param name="dvtkDataRequestedPresentationContext">The DvtkData RequestedPresentationContext instance to encapsulate.</param>
 internal PresentationContext(DvtkData.Dul.RequestedPresentationContext dvtkDataRequestedPresentationContext)
 {
     this.dvtkDataRequestedPresentationContext = dvtkDataRequestedPresentationContext;
 }