protected override void OnReceiveAssociateAccept(DicomAssociate association) { if ((_mainForm != null) && (_mainForm._mySettings.LogLowLevel)) { _mainForm.LogText("OnReceiveAssociateAccept", string.Empty, System.Drawing.Color.Green); } base.OnReceiveAssociateAccept(association); }
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); }
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); }
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 + ")"); } }
protected override void OnReceiveAssociateAccept(DicomAssociate association) { base.OnReceiveAssociateAccept(association); _Accepted = true; }
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); }
protected override void OnReceiveAssociateAccept(DicomAssociate association) { InvokeStatusEvent(StatusType.ReceiveAssociateAccept, 0, association.Calling, association.Called); Event.Set(); }
public override void OnBeforeSendAssociateRequest(DicomClient Client, DicomAssociate associate) { // View or change parameters base.OnBeforeSendAssociateRequest(Client, associate); }
protected override void OnReceiveAssociateRequest(DicomAssociate association) { server.DoAssociateRequest(this, association); }
public override void OnSendAssociateAccept(DicomClient Client, DicomAssociate associate) { Module.ScriptProcessor.RunScripts(ServerEvent.SendAssociateAccept, Client, associate); }
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); } }
protected override void OnReceiveAssociateRequest(DicomAssociate association) { server.cfind.InvokeStatusEvent(StatusType.ReceiveAssociateRequest, DicomExceptionCode.Success, association.Calling, association.Called); server.DoAssociateRequest(this, association); }
/* * 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"); } }
public override void OnReceiveAssociateRequest(DicomClient Client, DicomAssociate association) { Module.ScriptProcessor.RunScripts(ServerEvent.ReceiveAssociateRequest, Client, association); }