/// <summary> /// Tries to parse a <see cref="NbNsNodeStatusResponseResourceRecord"/> from a buffer of bytes /// </summary> /// <param name="buffer">Byte array containing the NbNsNodeStatusResponseResourceRecord</param> /// <param name="offset">Zero based offset in the buffer where the NbNsNodeStatusResponseResourceRecord starts</param> /// <param name="resourceRecord">Parsed NbNsNodeStatusResponseResourceRecord if successful, else null</param> /// <returns><c>true</c> if parsing was successful, else <c>false</c></returns> public static bool TryParse(byte[] buffer, int offset, out NbNsNodeStatusResponseResourceRecord resourceRecord) { resourceRecord = null; var result = new NbNsNodeStatusResponseResourceRecord(); if (!result.TryParse(buffer, offset)) { return(false); } if (result.RrType != RrTypeValue.NbStat || result.RrClass != RrClassValue.In) { return(false); } offset += result.RrName.Length + 2 + 2 + 4 + 2; var numNames = buffer[offset]; offset++; if (buffer.Length <= offset + numNames * NbNsNodeName.NODE_NAME_LENGTH + NbNsStatistics.STATISTICS_LENGTH) { return(false); } var nodeNames = new List <NbNsNodeName>(); for (byte i = 0; i < numNames; i++) { NbNsNodeName nodeName; if (!NbNsNodeName.TryParse(buffer, offset, out nodeName)) { return(false); } nodeNames.Add(nodeName); offset += NbNsNodeName.NODE_NAME_LENGTH; } result.NodeNames = nodeNames; NbNsStatistics statistics; if (!NbNsStatistics.TryParse(buffer, offset, out statistics)) { return(false); } result.Statistics = statistics; resourceRecord = result; return(true); }
/// <summary> /// Tries to parse a <see cref="NbNsNodeName"/> from a buffer of bytes /// </summary> /// <param name="buffer">Byte array containing the NbNsNodeName</param> /// <param name="offset">Zero based offset in the buffer where the NbNsNodeName starts</param> /// <param name="nodeName">Parsed NbNsNodeName if successful, else null</param> /// <returns><c>true</c> if parsing was successful, else <c>false</c></returns> public static bool TryParse(byte[] buffer, int offset, out NbNsNodeName nodeName) { nodeName = null; if (buffer == null) { return(false); } if (offset < 0 || offset > buffer.Length - NODE_NAME_LENGTH) { return(false); } nodeName = new NbNsNodeName(buffer.Skip(offset).Take(NODE_NAME_LENGTH).ToArray()); return(true); }
/// <summary> /// Tries to parse a <see cref="NbNsNodeName"/> from a buffer of bytes /// </summary> /// <param name="buffer">Byte array containing the NbNsNodeName</param> /// <param name="offset">Zero based offset in the buffer where the NbNsNodeName starts</param> /// <param name="nodeName">Parsed NbNsNodeName if successful, else null</param> /// <returns><c>true</c> if parsing was successful, else <c>false</c></returns> public static bool TryParse(byte[] buffer, int offset, out NbNsNodeName nodeName) { nodeName = null; if (buffer == null) return false; if (offset < 0 || offset > buffer.Length - NODE_NAME_LENGTH) return false; nodeName = new NbNsNodeName(buffer.Skip(offset).Take(NODE_NAME_LENGTH).ToArray()); return true; }