Overview | Package | Class | Tree | Deprecated | Index | Help
| SNMP Stack 5_1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## uk.co.westhawk.snmp.stack
Class AsnOctets

    java.lang.Object
      |
      +--uk.co.westhawk.snmp.stack.AsnObject
            |
            +--uk.co.westhawk.snmp.stack.AsnOctets

All Implemented Interfaces:
  SnmpConstants

public class AsnOctets
extends AsnObject

This class represents the ASN.1 Octet class. It can be used for Octets, Ip Addresses and Opaque primitive types. The Octets type (ASN_OCTET_STR) is used for some text convensions. This class supports the DateAndTime, DisplayString and InternationalDisplayString and Ipv6Address text convensions.
Note, the SNMP representation of IPv4 and IPv6 is different:

- IPv4: IPADDRESS (or ASN_OCTET_STR, see rfc 4001)
- IPv6: ASN_OCTET_STR

See also IPV6-TC, SNMPv2-PDU, INET-ADDRESS-MIB.

Version:
  $Revision: 3.39 $ $Date: 2006/03/23 14:54:10 $
Author:
  Tim Panton
See Also:
  `SnmpConstants.ASN_OCTET_STR`, `SnmpConstants.IPADDRESS`, `SnmpConstants.OPAQUE`

Field Summary
`static java.text.SimpleDateFormat` | `CALFORMAT` The object that is used in toCalendar() to format the calendar representation of the Octets according to the DateAndTime text convension.
`static java.lang.String` | `HEX_PREFIX` The hexadecimal prefix that is used when printing a hexadecimal number in toString().
`static AsnOctetsPrintableFace` | `printableObject` The default AsnOctetsPrintableFace object.

Fields inherited from class uk.co.westhawk.snmp.stack.AsnObject
`contentsLength, debug, headerLength, isCorrect, startPos, type`

Fields inherited from interface uk.co.westhawk.snmp.stack.SnmpConstants
`ASN_APPLICATION, ASN_BIT_STR, ASN_BIT8, ASN_BOOLEAN, ASN_CONSTRUCTOR, ASN_CONTEXT, ASN_EXTENSION_ID, ASN_INTEGER, ASN_LONG_LEN, ASN_NULL, ASN_OBJECT_ID, ASN_OCTET_STR, ASN_PRIMITIVE, ASN_PRIVATE, ASN_SEQUENCE, ASN_SET, ASN_UNIVERSAL, CONS_SEQ, COUNTER, COUNTER64, GAUGE, GET_REQ_MSG, GET_RPRT_MSG, GET_RSP_MSG, GETBULK_REQ_MSG, GETNEXT_REQ_MSG, INFORM_REQ_MSG, INTEGER, IPADDRESS, NSAP_ADDRESS, NULLOBJ, OBJID, OBSOLETED_RFC1442_UINTEGER32, OPAQUE, SET_REQ_MSG, SMI_V2_UINTEGER32, SNMP_ERR_AUTHORIZATIONERR, SNMP_ERR_BADVALUE, SNMP_ERR_COMMITFAILED, SNMP_ERR_DECODING_EXC, SNMP_ERR_DECODINGASN_EXC, SNMP_ERR_DECODINGPKTLNGTH_EXC, SNMP_ERR_GENERR, SNMP_ERR_INCONSISTENTNAME, SNMP_ERR_INCONSISTENTVALUE, SNMP_ERR_NOACCESS, SNMP_ERR_NOCREATION, SNMP_ERR_NOERROR, SNMP_ERR_NOSUCHNAME, SNMP_ERR_NOTWRITABLE, SNMP_ERR_READONLY, SNMP_ERR_RESOURCEUNAVAILABLE, SNMP_ERR_TOOBIG, SNMP_ERR_UNDOFAILED, SNMP_ERR_WRONGENCODING, SNMP_ERR_WRONGLENGTH, SNMP_ERR_WRONGTYPE, SNMP_ERR_WRONGVALUE, SNMP_TRAP_AUTHFAIL, SNMP_TRAP_COLDSTART, SNMP_TRAP_EGPNEIGHBORLOSS, SNMP_TRAP_ENTERPRISESPECIFIC, SNMP_TRAP_LINKDOWN, SNMP_TRAP_LINKUP, SNMP_TRAP_WARMSTART, SNMP_VAR_ENDOFMIBVIEW, SNMP_VAR_NOSUCHINSTANCE, SNMP_VAR_NOSUCHOBJECT, SNMP_VERSION_1, SNMP_VERSION_2c, SNMP_VERSION_3, STRING, TIMETICKS, TRP_REQ_MSG, TRPV2_REQ_MSG, version_id`

Constructor Summary
`AsnOctets(byte[] s)` Constructor.
`AsnOctets(byte[] s, byte t)` Constructor to create a specific type of AsnOctets.
`AsnOctets(java.util.Calendar cal)` Constructor for DateAndTime text convension.
`AsnOctets(char[] s)` Constructor.
`AsnOctets(java.net.Inet4Address iad, byte t)` Constructor to create an ASN IPv4 Address.
`AsnOctets(java.net.InetAddress iad)` Constructor to create an ASN IP Address.
`AsnOctets(java.io.InputStream in, int len)` Constructor.
`AsnOctets(java.lang.String s)` Constructor.

Method Summary
`boolean` | `equals(java.lang.Object anObject)` Compares this Octet to the specified object.
`byte[]` | `getBytes()` Returns the bytes.
`java.util.Calendar` | `getCalendar()` Returns the Octets as Calendar according to the DateAndTime text convension.
`java.net.InetAddress` | `getIpAddress()` Returns this Octet as an IP Address.
`java.lang.String` | `getValue()` Returns the String value.
`int` | `hashCode()` Returns a hash code for this Octet.
`static void` | `setHexPrefix(java.lang.String newPrefix)` Sets the global hexadecimal prefix.
`static void` | `setPrintable(AsnOctetsPrintableFace obj)` Sets the global AsnOctetsPrintableFace printableObject.
`java.lang.String` | `toCalendar()` Returns the String representation according to the DateAndTime convension.
`java.lang.String` | `toDisplayString()` Returns this Octet as a display string (text convension).
`java.lang.String` | `toHex()` Returns this Octet as an hexadecimal String, without any prefix.
`java.lang.String` | `toInternationalDisplayString()` Returns this Octet as an international display string (text convension).
`java.lang.String` | `toInternationalDisplayString(AsnOctetsPrintableFace face)` As toInternationalDisplayString(), but this methods will use this specific, one-off AsnOctetsPrintableFace object.
`java.lang.String` | `toIpAddress()` Returns this Octet as an IP Address string.
`java.lang.String` | `toString()` Returns the string representation of the AsnOctets.
`java.lang.String` | `toString(AsnOctetsPrintableFace face)` As toString(), but this methods will use this specific, one-off AsnOctetsPrintableFace object.
`long[]` | `toSubOid(boolean length_implied)` Converts this Octet to its corresponding sub-identifiers.

Methods inherited from class uk.co.westhawk.snmp.stack.AsnObject
`getRespType, getRespTypeString, setDebug`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### HEX_PREFIX

    public static java.lang.String HEX_PREFIX

  The hexadecimal prefix that is used when printing a hexadecimal number in toString(). By default this is "0x".

### CALFORMAT

    public static java.text.SimpleDateFormat CALFORMAT

  The object that is used in toCalendar() to format the calendar representation of the Octets according to the DateAndTime text convension. The pattern is "yyyy-M-d,HH:mm:ss.SS,z".

  See Also:
    `getCalendar()`, `toCalendar()`, `SimpleDateFormat`

### printableObject

    public static AsnOctetsPrintableFace printableObject

  The default AsnOctetsPrintableFace object.

  See Also:
    `setPrintable(uk.co.westhawk.snmp.stack.AsnOctetsPrintableFace)`, `DefaultAsnOctetsPrintable`

Constructor Detail

### AsnOctets

    public AsnOctets(byte[] s)
              throws java.lang.IllegalArgumentException

  Constructor. The type of the AsnOctets defaults to ASN_OCTET_STR.

Parameters:
  `s` - The byte array representing the AsnOctets
See Also:
  `SnmpConstants.ASN_OCTET_STR`

### AsnOctets

    public AsnOctets(byte[] s,
                     byte t)
              throws java.lang.IllegalArgumentException

  Constructor to create a specific type of AsnOctets.

Parameters:
  `s` - The byte array representing the AsnOctets
  `t` - The type of the AsnOctets
See Also:
  `SnmpConstants.ASN_OCTET_STR`, `SnmpConstants.IPADDRESS`, `SnmpConstants.OPAQUE`

### AsnOctets

    public AsnOctets(char[] s)

  Constructor. The type of the AsnOctets defaults to ASN_OCTET_STR.

Parameters:
  `s` - The character array representing the AsnOctets
See Also:
  `SnmpConstants.ASN_OCTET_STR`

### AsnOctets

    public AsnOctets(java.lang.String s)

  Constructor. The type of the AsnOctets defaults to ASN_OCTET_STR.

Parameters:
  `s` - The string representing the AsnOctets
See Also:
  `SnmpConstants.ASN_OCTET_STR`

### AsnOctets

    public AsnOctets(java.net.InetAddress iad)
              throws java.lang.IllegalArgumentException

  Constructor to create an ASN IP Address. If the address represents an IPv4 address, the asn type will be set to IPADDRESS. If it represents an IPv6 address, the asn type will be set to ASN_OCTET_STR.
  Note, the SNMP representation of IPv4 and IPv6 is different:
  - IPv4: IPADDRESS (or ASN_OCTET_STR, see rfc 4001)
  - IPv6: ASN_OCTET_STR
  See also IPV6-TC, SNMPv2-PDU, INET-ADDRESS-MIB.

Parameters:
  `iad` - The Inet Address
See Also:
  `AsnOctets(Inet4Address, byte)`

### AsnOctets

    public AsnOctets(java.net.Inet4Address iad,
                     byte t)
              throws java.lang.IllegalArgumentException

  Constructor to create an ASN IPv4 Address. If the address is an IPv4 address, it can either be represented by IPADDRESS or as ASN_OCTET_STR. See also IPV6-TC, SNMPv2-PDU, INET-ADDRESS-MIB.

Parameters:
  `iad` - The IPv4 Inet Address
  `t` - The type of the AsnOctets
Since:
  4_14
See Also:
  `AsnOctets(InetAddress)`, `SnmpConstants.IPADDRESS`, `SnmpConstants.ASN_OCTET_STR`

### AsnOctets

    public AsnOctets(java.util.Calendar cal)

  Constructor for DateAndTime text convension. See SNMPv2-TC

            field  octets  contents                  range
            -----  ------  --------                  -----
              1      1-2   year*                     0..65536
              2       3    month                     1..12
              3       4    day                       1..31
              4       5    hour                      0..23
              5       6    minutes                   0..59
              6       7    seconds                   0..60
                           (use 60 for leap-second)
              7       8    deci-seconds              0..9

              8       9    direction from UTC        '+' / '-'
              9      10    hours from UTC*           0..13
             10      11    minutes from UTC          0..59

       SYNTAX       OCTET STRING (SIZE (8 | 11))

Since:
  4_14

### AsnOctets

    public AsnOctets(java.io.InputStream in,
                     int len)
              throws java.io.IOException

  Constructor.

Parameters:
  `in` - The input stream from which the value should be read
  `len` - The length of the AsnOctets

Method Detail

### setHexPrefix

    public static void setHexPrefix(java.lang.String newPrefix)

  Sets the global hexadecimal prefix. This prefix will be used in toString() when it prints out a hexadecimal number. It is not used in toHex(). The default is "0x".

  See Also:
    `toString()`, `toHex()`, `HEX_PREFIX`

### setPrintable

    public static void setPrintable(AsnOctetsPrintableFace obj)

  Sets the global AsnOctetsPrintableFace printableObject. This object will be used in the toString() and the toInternationalDisplayString() methods.

  Since:
    4_14
  See Also:
    `toString()`, `toInternationalDisplayString()`

### getValue

    public java.lang.String getValue()

  Returns the String value. Calls toString().

  Returns:
    The value of the AsnOctets
  See Also:
    `toString()`

### getBytes

    public byte[] getBytes()

  Returns the bytes. This returns a copy of the internal byte array.

  Returns:
    The bytes of the AsnOctets

### toString

    public java.lang.String toString()

  Returns the string representation of the AsnOctets.

  The string will have one of the following formats:

  - if this class represents an IP Address (v4), it will call toIpAddress()
  - <prefix>aa[:bb]*, if this class represents a non-printable string or has type OPAQUE. The output will be in hexadecimal numbers (see toHex()). It will be prefixed according to the hex. prefix value
  - a printable string, if this class seems printable

  When the type is ASN_OCTET_STR, this method uses the AsnOctetsPrintableFace.isPrintable() to determine whether or not the string is printable. If it is printable, it will use AsnOctetsPrintableFace.toInternationalDisplayString() to transform the Octets to a String.

  Note, the SNMP representation of IPv4 and IPv6 is different:
  - IPv4: IPADDRESS (or ASN_OCTET_STR, see rfc 4001)
  - IPv6: ASN_OCTET_STR
  See also IPV6-TC, SNMPv2-PDU, INET-ADDRESS-MIB.

  Specified by:
    `toString` in class `AsnObject`
  Returns:
    The string representation of the AsnOctets
  See Also:
    `HEX_PREFIX`, `setHexPrefix(String)`, `toHex()`, `toIpAddress()`, `AsnOctetsPrintableFace.isPrintable(byte[])`, `AsnOctetsPrintableFace.toInternationalDisplayString(byte[])`

### toString

    public java.lang.String toString(AsnOctetsPrintableFace face)

  As toString(), but this methods will use this specific, one-off AsnOctetsPrintableFace object.

  Since:
    4_14
  See Also:
    `toString()`

### toIpAddress

    public java.lang.String toIpAddress()

  Returns this Octet as an IP Address string. The format is aaa.bbb.ccc.ddd (IPv4) or a:b:c:d:e:f:g:h (IPv6). Note, the SNMP representation of IPv4 and IPv6 is different:
  - IPv4: IPADDRESS (or ASN_OCTET_STR, see rfc 4001)
  - IPv6: ASN_OCTET_STR
  See also IPV6-TC, SNMPv2-PDU, INET-ADDRESS-MIB.

  Returns:
    The IP Address representation.
  See Also:
    `toString()`, `getIpAddress()`, `SnmpConstants.ASN_OCTET_STR`, `SnmpConstants.IPADDRESS`

### getIpAddress

    public java.net.InetAddress getIpAddress()
                                      throws java.lang.RuntimeException

  Returns this Octet as an IP Address. Note, the SNMP representation of IPv4 and IPv6 is different:
  - IPv4: IPADDRESS (or ASN_OCTET_STR, see rfc 4001)
  - IPv6: ASN_OCTET_STR
  See also IPV6-TC, SNMPv2-PDU, INET-ADDRESS-MIB.

  Returns:
    The IP Address representation.
  Throws:
    `java.lang.RuntimeException` - Thrown when the Octets does not represent an InetAddress or when the method internally throws an java.net.UnknownHostException
  Since:
    4_14
  See Also:
    `toString()`, `toIpAddress()`, `SnmpConstants.ASN_OCTET_STR`, `SnmpConstants.IPADDRESS`

### toHex

    public java.lang.String toHex()

  Returns this Octet as an hexadecimal String, without any prefix.

  Returns:
    The hex representation.
  See Also:
    `toString()`

### toDisplayString

    public java.lang.String toDisplayString()

  Returns this Octet as a display string (text convension). In contrast to the method toString(), this method does not try to guess whether or not this string is printable, it just converts it to a String, using "US-ASCII" character set.

  DisplayString represents textual information taken from the NVT ASCII character set, as defined in pages 4, 10-11 of RFC 854. Any object defined using this syntax may not exceed 255 characters in length. Basicly it is US-ASCII with some changes.

  Returns:
    The string representation.
  See Also:
    `toString()`

### toInternationalDisplayString

    public java.lang.String toInternationalDisplayString()

  Returns this Octet as an international display string (text convension). It calls AsnOctetsPrintableFace.toInternationalDisplayString(). See HOST-RESOURCES-MIB

  Since:
    4_14
  See Also:
    `AsnOctetsPrintableFace.toInternationalDisplayString(byte[])`

### toInternationalDisplayString

    public java.lang.String toInternationalDisplayString(AsnOctetsPrintableFace face)

  As toInternationalDisplayString(), but this methods will use this specific, one-off AsnOctetsPrintableFace object.

  Since:
    4_14
  See Also:
    `toInternationalDisplayString()`

### toCalendar

    public java.lang.String toCalendar()
                                throws java.lang.RuntimeException

  Returns the String representation according to the DateAndTime convension. This string it returns is not exactly the same as the DISPLAY-HINT indicates. See SNMPv2-TC

  Throws:
    `java.lang.RuntimeException` - Thrown when the number of Octets does not represent the DateAndTime length.
  Since:
    4_14
  See Also:
    `CALFORMAT`

### getCalendar

    public java.util.Calendar getCalendar()
                                   throws java.lang.RuntimeException

  Returns the Octets as Calendar according to the DateAndTime text convension. You can only call this method if the syntax of this Octet is the DateAndTime text convension.

  Throws:
    `java.lang.RuntimeException` - Thrown when the number of Octets does not represent the DateAndTime length.
  Since:
    4_14
  See Also:
    `AsnOctets(java.util.Calendar)`

### toSubOid

    public long[] toSubOid(boolean length_implied)

  Converts this Octet to its corresponding sub-identifiers. Each octet will be encoded in a separate sub-identifier, by converting the octet into a positive long.

  Use this method when building an OID when this Octet specifies a conceptual row. For example ipNetToMediaEntry, see IP-MIB or SnmpCommunityEntry, see SNMP-COMMUNITY-MIB

  The variable `length_implied` indicates that this MIB variable is preceded by the IMPLIED keyword:

  - The IMPLIED keyword can only be present for an Octet having a variable-length syntax (e.g., variable-length strings or object identifier-valued objects).
  - The IMPLIED keyword can only be associated with the last object in the INDEX clause.
  - The IMPLIED keyword may not be used on a variable-length string Octet if that string might have a value of zero-length.

  If the length is implied, no extra sub-identifier will be created to indicate its length.
  If the length is not implied, the first sub-identifier will be the length of the Octet.

  If this Octet is of type IPADDRESS, length_implied should be false.

  The mapping of the INDEX clause is explained in SNMPv2-SMI, section 7.7.

  Parameters:
    `length_implied` - Indicates if the length of this octet is implied.
  See Also:
    `AsnObjectId.add(long[])`

### equals

    public boolean equals(java.lang.Object anObject)

  Compares this Octet to the specified object. The result is `true` if and only if the argument is not `null` and is an `AsnOctets` object that represents the same sequence of octets as this Octet.

  Overrides:
    `equals` in class `java.lang.Object`
  Parameters:
    `anObject` - the object to compare this `AsnOctets` against.
  Returns:
    `true` if the `AsnOctets` are equal; `false` otherwise.

### hashCode

    public int hashCode()

  Returns a hash code for this Octet. The hash code for a `AsnOctets` object is computed as

  >      s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

  using `int` arithmetic, where `s[i]` is the ith character of the Octet, `n` is the length of the Octet, and `^` indicates exponentiation. (The hash value of the empty Octet is zero.)

  Overrides:
    `hashCode` in class `java.lang.Object`
  Returns:
    a hash code value for this Octet.

Overview | Package | Class | Tree | Deprecated | Index | Help
| SNMP Stack 5_1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD