/// <summary> /// Compare class value with the value of the second class /// </summary> /// <param name="other">Class whose value we are comparing with</param> /// <returns>less then 0 if if parameter is less then, 0 if paramater is equal and greater then 0 if parameter is greater then the class value</returns> public int CompareTo(Counter64 other) { if (other == null) { return(-1); } return(_value.CompareTo(other.Value)); }
/// <summary> /// Compare class value against the object argument. Supported argument types are /// <see cref="Counter64"/> and UInt64. /// </summary> /// <param name="obj">Object to compare values with</param> /// <returns>True if object value is the same as this class, otherwise false.</returns> public bool Equals(Counter64 obj) { if (obj == null) { return(false); } if (obj is Counter64) { return(_value.Equals(((Counter64)obj).Value)); } return(false); }
/// <summary> /// SET class value from another Counter64 class cast as <seealso cref="AsnType"/>. /// </summary> /// <param name="value">Counter64 class cast as <seealso cref="AsnType"/></param> /// <exception cref="ArgumentException">Argument is not Counter64 type.</exception> public void Set(AsnType value) { Counter64 val = value as Counter64; if (val != null) { _value = val.Value; } else { throw new ArgumentException("Invalid argument type."); } }
/// <summary> /// Return SNMP type object of the type specified by name. Supported variable types are: /// * <see cref="Integer32"/> /// * <see cref="Counter32"/> /// * <see cref="Gauge32"/> /// * <see cref="Counter64"/> /// * <see cref="TimeTicks"/> /// * <see cref="OctetString"/> /// * <see cref="IpAddress"/> /// * <see cref="Oid"/> /// * <see cref="Null"/> /// </summary> /// <param name="name">Name of the object type</param> /// <returns>New <see cref="AsnType"/> object.</returns> public static AsnType GetSyntaxObject(string name) { AsnType obj = null; if (name == "Integer32") { obj = new Integer32(); } else if (name == "Counter32") { obj = new Counter32(); } else if (name == "Gauge32") { obj = new Gauge32(); } else if (name == "Counter64") { obj = new Counter64(); } else if (name == "TimeTicks") { obj = new TimeTicks(); } else if (name == "OctetString") { obj = new OctetString(); } else if (name == "IpAddress") { obj = new IpAddress(); } else if (name == "Oid") { obj = new Oid(); } else if (name == "Null") { obj = new Null(); } else { throw new ArgumentException("Invalid value type name"); } return(obj); }
/// <summary> /// Return SNMP type object of the type specified by name. Supported variable types are: /// <see cref="Integer32"/>, <see cref="Counter32"/>, <see cref="Gauge32"/>, <see cref="Counter64"/>, /// <see cref="TimeTicks"/>, <see cref="OctetString"/>, <see cref="IpAddress"/>, <see cref="Oid"/>, and /// <see cref="Null"/>. /// /// Type names are the same as support class names compared without case sensitivity (e.g. Integer == INTEGER). /// </summary> /// <param name="name">Name of the object type (not case sensitive)</param> /// <returns>New <see cref="AsnType"/> object.</returns> public static AsnType GetSyntaxObject(string name) { AsnType obj = null; if (name.ToUpper().Equals("INTEGER32") || name.ToUpper().Equals("INTEGER")) { obj = new Integer32(); } else if (name.ToUpper().Equals("COUNTER32")) { obj = new Counter32(); } else if (name.ToUpper().Equals("GAUGE32")) { obj = new Gauge32(); } else if (name.ToUpper().Equals("COUNTER64")) { obj = new Counter64(); } else if (name.ToUpper().Equals("TIMETICKS")) { obj = new TimeTicks(); } else if (name.ToUpper().Equals("OCTETSTRING")) { obj = new OctetString(); } else if (name.ToUpper().Equals("IPADDRESS")) { obj = new IpAddress(); } else if (name.ToUpper().Equals("OID")) { obj = new Oid(); } else if (name.ToUpper().Equals("NULL")) { obj = new Null(); } else { throw new ArgumentException("Invalid value type name"); } return(obj); }
/// <summary> /// Return difference between two Counter64 values taking counter roll-over into account. /// </summary> /// <param name="first">First or older value</param> /// <param name="second">Second or newer value</param> /// <returns>Difference between the two values</returns> public static ulong Diff(Counter64 first, Counter64 second) { ulong f = first.Value; ulong s = second.Value; ulong res = 0; if (s > f) { // in case of a roll-over event res = (ulong.MaxValue - f) + s; } else { res = s - f; } return(res); }
/// <summary> /// Return difference between two Counter64 values taking counter roll-over into account. /// </summary> /// <param name="first">First or older value</param> /// <param name="second">Second or newer value</param> /// <returns>Difference between the two values</returns> public static UInt64 Diff(Counter64 first, Counter64 second) { UInt64 f = first.Value; UInt64 s = second.Value; UInt64 res = 0; if (s > f) { // in case of a roll-over event res = (UInt64.MaxValue - f) + s; } else { res = s - f; } return(res); }
/// <summary> /// Constructor /// </summary> /// <param name="value">Copy value</param> public Counter64(Counter64 value) : this() { _value = value.Value; }
/// <summary>Used to create correct variable type object for the specified encoded type</summary> /// <param name="asnType">ASN.1 type code</param> /// <returns>A new object matching type supplied or null if type was not recognized.</returns> public static AsnType GetSyntaxObject(byte asnType) { AsnType obj = null; if (asnType == SnmpConstants.SMI_INTEGER) { obj = new Integer32(); } else if (asnType == SnmpConstants.SMI_COUNTER32) { obj = new Counter32(); } else if (asnType == SnmpConstants.SMI_GAUGE32) { obj = new Gauge32(); } else if (asnType == SnmpConstants.SMI_COUNTER64) { obj = new Counter64(); } else if (asnType == SnmpConstants.SMI_TIMETICKS) { obj = new TimeTicks(); } else if (asnType == SnmpConstants.SMI_STRING) { obj = new OctetString(); } else if (asnType == SnmpConstants.SMI_OPAQUE) { obj = new Opaque(); } else if (asnType == SnmpConstants.SMI_IPADDRESS) { obj = new IpAddress(); } else if (asnType == SnmpConstants.SMI_OBJECTID) { obj = new Oid(); } else if (asnType == SnmpConstants.SMI_PARTY_CLOCK) { obj = new V2PartyClock(); } else if (asnType == SnmpConstants.SMI_NOSUCHINSTANCE) { obj = new NoSuchInstance(); } else if (asnType == SnmpConstants.SMI_NOSUCHOBJECT) { obj = new NoSuchObject(); } else if (asnType == SnmpConstants.SMI_ENDOFMIBVIEW) { obj = new EndOfMibView(); } else if (asnType == SnmpConstants.SMI_NULL) { obj = new Null(); } return(obj); }
/// <summary>Used to create correct variable type object for the specified encoded type</summary> /// <param name="asnType">ASN.1 type code</param> /// <returns>A new object matching type supplied or null if type was not recognized.</returns> public static AsnType GetSyntaxObject(ESMIDataTypeCode asnType) { AsnType obj = null; if (asnType == ESMIDataTypeCode.Integer) { obj = new Integer32(); } else if (asnType == ESMIDataTypeCode.Counter32) { obj = new Counter32(); } else if (asnType == ESMIDataTypeCode.Gauge32) { obj = new Gauge32(); } else if (asnType == ESMIDataTypeCode.Counter64) { obj = new Counter64(); } else if (asnType == ESMIDataTypeCode.TimeTicks) { obj = new TimeTicks(); } else if (asnType == ESMIDataTypeCode.OctetString) { obj = new OctetString(); } else if (asnType == ESMIDataTypeCode.Opaque) { obj = new Opaque(); } else if (asnType == ESMIDataTypeCode.IPAddress) { obj = new IpAddress(); } else if (asnType == ESMIDataTypeCode.ObjectId) { obj = new Oid(); } else if (asnType == ESMIDataTypeCode.PartyClock) { obj = new V2PartyClock(); } else if (asnType == ESMIDataTypeCode.NoSuchInstance) { obj = new NoSuchInstance(); } else if (asnType == ESMIDataTypeCode.NoSuchObject) { obj = new NoSuchObject(); } else if (asnType == ESMIDataTypeCode.EndOfMibView) { obj = new EndOfMibView(); } else if (asnType == ESMIDataTypeCode.Null) { obj = new Null(); } return(obj); }