/// <summary> /// Factory method for creating <see cref="DicomExtendedNegotiation"/> instances. /// </summary> /// <param name="raw">Raw PDU.</param> /// <param name="length">Length.</param> /// <returns>A new <see cref="DicomExtendedNegotiation"/> instance.</returns> public static DicomExtendedNegotiation Create(RawPDU raw, ushort length) { var uidLen = raw.ReadUInt16("SOP Class UID Length"); var uidStr = raw.ReadString("SOP Class UID", uidLen); var uid = DicomUID.Parse(uidStr); IExtendedNegotiationSubItem subItem = null; var subItemSize = 0; var remaining = length - uidLen - 2; if (subItemCreators.ContainsKey(uid)) { subItem = subItemCreators[uid](raw, remaining, out subItemSize); } remaining -= subItemSize; if (remaining > 0) { raw.SkipBytes("Unread bytes", remaining); } return(new DicomExtendedNegotiation(uid, subItem)); }
/// <summary> /// Initializes an instance of the <see cref="DicomExtendedNegotiation"/> class. /// </summary> /// <param name="sopClassUid">SOP class UID.</param> /// <param name="subItem">Extended negotiation sub-item.</param> public DicomExtendedNegotiation(DicomUID sopClassUid, IExtendedNegotiationSubItem subItem) { SopClassUid = sopClassUid; SubItem = subItem; }