Source/Tx.Network/Snmp/VarBindExtensions.cs (49 lines of code) (raw):

 namespace Tx.Network.Snmp { using System.Collections.Generic; using System.Collections.ObjectModel; internal static class VarBindExtensions { /// <summary> /// Searches the first sub oid. /// </summary> /// <param name="subOid">The sub oid.</param> /// <param name="varBind">The variable bind.</param> /// <param name="varBinds">The variable bind List.</param> /// <returns>Boolean value true if subOid is found else false</returns> public static bool SearchFirstSubOidWith(this IReadOnlyCollection<VarBind> varBinds, ObjectIdentifier subOid, out VarBind varBind) { bool isFound = false; varBind = default(VarBind); foreach (var item in varBinds) { if (item.Oid.IsSubOid(subOid)) { varBind = item; isFound = true; break; } } return isFound; } /// <summary> /// Searches the last sub oid with. /// </summary> /// <param name="subOid">The sub oid.</param> /// <param name="varBind">The variable bind.</param> /// <param name="varBinds">The variable bind List.</param> /// <returns>Boolean value true if subOid is found else false</returns> public static bool SearchLastSubOidWith(this ReadOnlyCollection<VarBind> varBinds, ObjectIdentifier subOid, out VarBind varBind) { bool isFound = false; varBind = default(VarBind); for (int i = varBinds.Count - 1; i >= 0; i--) { if (varBinds[i].Oid.IsSubOid(subOid)) { varBind = varBinds[i]; isFound = true; break; } } return isFound; } /// <summary> /// Gets all oids starting with. /// </summary> /// <param name="subOid">The sub oid.</param> /// <param name="varBinds">The variable bind List.</param> /// <returns>IEnumerable of VarBind</returns> public static IEnumerable<VarBind> GetAllOidsStartingWith(this ReadOnlyCollection<VarBind> varBinds, ObjectIdentifier subOid) { for (int i = 0; i < varBinds.Count; i++) { if (varBinds[i].Oid.IsSubOid(subOid)) { yield return varBinds[i]; } } } } }