Esempio n. 1
0
 protected override void OnReceiveAssociateAccept(DicomAssociate association)
 {
     if ((_mainForm != null) && (_mainForm._mySettings.LogLowLevel))
     {
         _mainForm.LogText("OnReceiveAssociateAccept", string.Empty, System.Drawing.Color.Green);
     }
     base.OnReceiveAssociateAccept(association);
 }
Esempio n. 2
0
        protected override DicomAssociate BuildAssociation(DicomScp scp)
        {
            DicomAssociate associate = base.BuildAssociation(scp);
            byte           pid       = associate.FindAbstract(DicomUidType.PatientRootQueryMove);

            if (pid != 0)
            {
                associate.SetExtendedData(pid, new byte[] { 1 });
            }
            return(associate);
        }
Esempio n. 3
0
 public override void OnBeforeSendAssociateAccept(DicomClient Client, DicomAssociate associateRequest, DicomAssociate associateAccept)
 {
     //The code below shows how to handle role selection
     // In this example, the SCP accepts all proposed role selections
     //
     //for (byte i = 0; i< associateRequest.PresentationContextCount; i++)
     //{
     //   byte pid = associateRequest.GetPresentationContextID(i);
     //   bool isRoleSelect = associateRequest.IsRoleSelect(pid);
     //   if (isRoleSelect)
     //   {
     //      DicomRoleSupport userRole = associateRequest.GetUserRole(pid);
     //      DicomRoleSupport providerRole = associateRequest.GetProviderRole(pid);
     //      associateAccept.SetRoleSelect(pid, true, userRole, providerRole);
     //   }
     //}
     base.OnBeforeSendAssociateAccept(Client, associateRequest, associateAccept);
 }
Esempio n. 4
0
        protected override void OnReceiveAssociateRequest(DicomAssociate association)
        {
            server.mf.UpdateClient(this, association.Calling, "Associate");
            server.mf.Log("ASSOCIATE-REQUEST", "Received from " + association.Calling);

            if (!server.usersDB.FindUser(PeerAddress, association.Calling))
            {
                SendAssociateReject(DicomAssociateRejectResultType.Permanent,
                                    DicomAssociateRejectSourceType.User,
                                    DicomAssociateRejectReasonType.Calling);
                server.mf.Log("ASSOCIATE-REJECT", "Invalid calling AE Title: " + association.Calling);
            }
            else
            {
                server.DoAssociateRequest(this, association);
                server.mf.EnableTimer(this, association.Calling, true);
                server.mf.Log("ASSOCIATE-REQUEST", "Association accepted from " +
                              association.Calling + " (" + PeerAddress + ")");
            }
        }
Esempio n. 5
0
 protected override void OnReceiveAssociateAccept(DicomAssociate association)
 {
     base.OnReceiveAssociateAccept(association);
     _Accepted = true;
 }
Esempio n. 6
0
        public DicomAssociate BuildAssociation(string CalledTitle, string CallingTitle)
        {
            PresentationContextCollection contexts = GetPresentationContext();
            DicomAssociate association             = new DicomAssociate(true);

            association.Called         = CalledTitle;
            association.Calling        = CallingTitle;
            association.MaxLength      = 46726;
            association.ImplementClass = ImplementationClass;

            byte pid = 1;
            bool addedImplicitVRLittleEndian = false;

            if (PresentationContextType == 0)
            {
                // One presentation context contains all transfer syntaxes
                foreach (PresentationContext pc in contexts)
                {
                    association.AddPresentationContext(pid, 0, pc.AbstractSyntax);
                    addedImplicitVRLittleEndian = false;
                    foreach (string transfersyntax in pc.TransferSyntaxList)
                    {
                        association.AddTransfer(pid, transfersyntax);
                        if (transfersyntax == DicomUidType.ImplicitVRLittleEndian)
                        {
                            addedImplicitVRLittleEndian = true;
                        }
                    }
                    if (!addedImplicitVRLittleEndian)
                    {
                        association.AddTransfer(pid, DicomUidType.ImplicitVRLittleEndian);
                    }
                    pid += 2;
                }
            }
            else
            {
                // Separate presentation context for each transfer syntax
                foreach (PresentationContext pc in contexts)
                {
                    addedImplicitVRLittleEndian = false;
                    foreach (string transfersyntax in pc.TransferSyntaxList)
                    {
                        association.AddPresentationContext(pid, 0, pc.AbstractSyntax);
                        association.AddTransfer(pid, transfersyntax);
                        if (transfersyntax == DicomUidType.ImplicitVRLittleEndian)
                        {
                            addedImplicitVRLittleEndian = true;
                        }
                        pid += 2;
                    }
                    if (!addedImplicitVRLittleEndian)
                    {
                        association.AddPresentationContext(pid, 0, pc.AbstractSyntax);
                        association.AddTransfer(pid, DicomUidType.ImplicitVRLittleEndian);
                        pid += 2;
                    }
                }
            }



            return(association);
        }
Esempio n. 7
0
 protected override void OnReceiveAssociateAccept(DicomAssociate association)
 {
     InvokeStatusEvent(StatusType.ReceiveAssociateAccept, 0, association.Calling,
                       association.Called);
     Event.Set();
 }
Esempio n. 8
0
 public override void OnBeforeSendAssociateRequest(DicomClient Client, DicomAssociate associate)
 {
     // View or change parameters
     base.OnBeforeSendAssociateRequest(Client, associate);
 }
Esempio n. 9
0
 protected override void OnReceiveAssociateRequest(DicomAssociate association)
 {
     server.DoAssociateRequest(this, association);
 }
Esempio n. 10
0
 public override void OnSendAssociateAccept(DicomClient Client, DicomAssociate associate)
 {
     Module.ScriptProcessor.RunScripts(ServerEvent.SendAssociateAccept, Client, associate);
 }
Esempio n. 11
0
        public void DoAssociateRequest(CFindClient client, DicomAssociate association)
        {
            using (DicomAssociate retAssociate = new DicomAssociate(false))
            {
                if (retAssociate == null)
                {
                    client.SendAssociateReject(DicomAssociateRejectResultType.Permanent,
                                               DicomAssociateRejectSourceType.Provider1,
                                               DicomAssociateRejectReasonType.Application);
                    return;
                }

                retAssociate.MaxLength = 46726;
                retAssociate.Version   = 1;
                retAssociate.Called    = (CalledAE == null) ? association.Called : CalledAE;
                retAssociate.Calling   = (CallingAE == null) ? association.Calling : CallingAE;
                retAssociate.ApplicationContextName = (string)DicomUidType.ApplicationContextName;

                for (int i = 0; i < association.PresentationContextCount; i++)
                {
                    byte   id             = association.GetPresentationContextID(i);
                    string abstractSyntax = association.GetAbstract(id);

                    retAssociate.AddPresentationContext(id, DicomAssociateAcceptResultType.Success, abstractSyntax);
                    if (IsSupported(abstractSyntax))
                    {
                        for (int j = 0; j < association.GetTransferCount(id); j++)
                        {
                            string transferSyntax = association.GetTransfer(id, j);

                            if (IsSupported(transferSyntax))
                            {
                                retAssociate.AddTransfer(id, transferSyntax);
                                break;
                            }
                        }

                        if (retAssociate.GetTransferCount(id) == 0)
                        {
                            //
                            // Presentation id doesn't have any abstract
                            //  syntaxes therefore we will reject it.
                            //
                            retAssociate.SetResult(id, DicomAssociateAcceptResultType.AbstractSyntax);
                        }
                    }
                    else
                    {
                        retAssociate.SetResult(id, DicomAssociateAcceptResultType.AbstractSyntax);
                    }
                }

                if (association.MaxLength != 0)
                {
                    retAssociate.MaxLength = association.MaxLength;
                }

                retAssociate.ImplementClass            = ImplementationClass;
                retAssociate.ImplementationVersionName = ImplementationVersionName;

                client.SendAssociateAccept(retAssociate);
            }
        }
Esempio n. 12
0
 protected override void OnReceiveAssociateRequest(DicomAssociate association)
 {
     server.cfind.InvokeStatusEvent(StatusType.ReceiveAssociateRequest, DicomExceptionCode.Success,
                                    association.Calling, association.Called);
     server.DoAssociateRequest(this, association);
 }
Esempio n. 13
0
        /*
         * Performs an Association request
         */
        public void DoAssociateRequest(Client client, DicomAssociate association)
        {
            mf.Log("Client Name: " + association.Calling + " -- Receiving Associate Request.\r\n");

            // Check association
            if (association == null)
            {
                client.SendAssociateReject(DicomAssociateRejectResultType.Permanent, DicomAssociateRejectSourceType.Provider1, DicomAssociateRejectReasonType.Application);
                mf.Log("Client Name: " + association.Calling + " -- Failed in accepting the connection (Associate was null)!\r\nSending associate reject!\r\n");
                return;
            }

            // Check version
            if (association.Version != 1)
            {
                client.SendAssociateReject(DicomAssociateRejectResultType.Permanent, DicomAssociateRejectSourceType.Provider1, DicomAssociateRejectReasonType.Version);
                mf.Log("Client Name: " + association.Calling + " -- Failed in accepting the connection (Version Not supported)!\r\nSending associate reject!\r\n");
                return;
            }

            // Make sure that the client is supported
            if (!VerifyUserName(association.Calling))
            {
                client.SendAssociateReject(DicomAssociateRejectResultType.Permanent, DicomAssociateRejectSourceType.User, DicomAssociateRejectReasonType.Calling);
                mf.Log("Client Name: " + association.Calling + " -- Failed in accepting the connection (Not a valid client name)!\r\nSending associate reject!\r\n");
                return;
            }

            // Check the Called AE title (SCP)
            if (association.Called != CalledAE)
            {
                client.SendAssociateReject(DicomAssociateRejectResultType.Permanent, DicomAssociateRejectSourceType.User, DicomAssociateRejectReasonType.Called);
                mf.Log("Client Name: " + association.Calling + " -- Failed in accepting the connection (Server names are not the same)!\r\n Sending associate reject!\r\n");
                return;
            }

            // Send association back
            using (DicomAssociate retAssociate = new DicomAssociate(false))
            {
                retAssociate.MaxLength = 46726;
                retAssociate.Version   = 1;
                retAssociate.Called    = CalledAE;
                retAssociate.Calling   = (CallingAE == null) ? association.Calling : CallingAE;
                retAssociate.ApplicationContextName = (string)DicomUidType.ApplicationContextName;

                for (int i = 0; i < association.PresentationContextCount; i++)
                {
                    byte   id             = association.GetPresentationContextID(i);
                    string abstractSyntax = association.GetAbstract(id);

                    retAssociate.AddPresentationContext(id, DicomAssociateAcceptResultType.Success, abstractSyntax);
                    if (IsSupported(abstractSyntax))
                    {
                        for (int j = 0; j < association.GetTransferCount(id); j++)
                        {
                            string transferSyntax = association.GetTransfer(id, j);

                            if (IsSupported(transferSyntax))
                            {
                                retAssociate.AddTransfer(id, transferSyntax);
                                break;
                            }
                        }

                        if (retAssociate.GetTransferCount(id) == 0)
                        {
                            // Presentation id doesn't have any abstract syntaxes therefore we will reject it.
                            retAssociate.SetResult(id, DicomAssociateAcceptResultType.AbstractSyntax);
                        }
                    }
                    else
                    {
                        retAssociate.SetResult(id, DicomAssociateAcceptResultType.AbstractSyntax);
                    }
                }

                if (association.MaxLength != 0)
                {
                    retAssociate.MaxLength = association.MaxLength;
                }

                retAssociate.ImplementClass            = ImplementationClass;
                retAssociate.ImplementationVersionName = ImplementationVersionName;

                client.SendAssociateAccept(retAssociate);
                mf.Log("Client Name: " + association.Calling + " -- Sending Associate Accept.\r\n");
            }
        }
Esempio n. 14
0
 public override void OnReceiveAssociateRequest(DicomClient Client, DicomAssociate association)
 {
     Module.ScriptProcessor.RunScripts(ServerEvent.ReceiveAssociateRequest, Client, association);
 }