internal static AssociationResponse FromPDU(AssociateAcceptPDU pdu) { var associationResponse = new AssociationResponse(); foreach (var item in pdu.Items) { if (item is ApplicationContextItem applicationContextItem) { var applicationContextName = Encoding.ASCII.GetString(applicationContextItem.ApplicationContextName); if (applicationContextName != NetUtils.DicomApplicationContextName) { throw new NotSupportedException($"Unsupported application context name '{applicationContextName}'"); } } else if (item is PresentationContextResponseItem presentationContextItem) { associationResponse.PresentationContextResponses.Add(PresentationContextResponse.FromItem(presentationContextItem)); } else if (item is UserInformationItem userInformationItem) { foreach (var subItem in userInformationItem.SubItems) { if (subItem is MaximumLengthSubItem maximumLengthSubItem) { associationResponse.MaxDataTransferPDULength = maximumLengthSubItem.MaximumLength; } } } } return(associationResponse); }
internal AssociateAcceptPDU ToPDU(AssociateRequestPDU requestPDU) { var pdu = new AssociateAcceptPDU(); requestPDU.CalledAETitle.AsSpan().CopyTo(pdu.CopiedFromAssociateRequestPDU_1); requestPDU.CallingAETitle.AsSpan().CopyTo(pdu.CopiedFromAssociateRequestPDU_2); requestPDU.Reserved.AsSpan().CopyTo(pdu.CopiedFromAssociateRequestPDU_3); pdu.Items.Add(new ApplicationContextItem { ApplicationContextName = Encoding.ASCII.GetBytes(NetUtils.DicomApplicationContextName) }); foreach (var presentationContextResponse in PresentationContextResponses) { pdu.Items.Add(presentationContextResponse.ToItem()); } var userInformationItem = new UserInformationItem(); if (MaxDataTransferPDULength.HasValue) { userInformationItem.SubItems.Add(new MaximumLengthSubItem { MaximumLength = MaxDataTransferPDULength.Value }); } pdu.Items.Add(userInformationItem); return(pdu); }