org.opensolaris.os.dtrace
Class InterfaceAttributes

java.lang.Object
  extended by org.opensolaris.os.dtrace.InterfaceAttributes
All Implemented Interfaces:
java.io.Serializable

public final class InterfaceAttributes
extends java.lang.Object
implements java.io.Serializable

Triplet of attributes consisting of two stability levels and a dependency class. Attributes may vary independently. They use labels described in the attributes(5) man page to help set expectations for what kinds of changes might occur in different kinds of future releases. The D compiler includes features to dynamically compute the stability levels of D programs you create. For more information, refer to the Stability chapter of the Solaris Dynamic Tracing Guide.

Immutable. Supports persistence using XMLEncoder.

See Also:
Consumer.getProgramInfo(Program program), Consumer.enable(Program program), Consumer.listProbes(ProbeDescription filter), Consumer.listProgramProbes(Program program), Serialized Form

Nested Class Summary
static class InterfaceAttributes.DependencyClass
          Architectural dependency class.
static class InterfaceAttributes.Stability
          Interface stability level.
 
Constructor Summary
InterfaceAttributes(InterfaceAttributes.Stability nameStabilityAttribute, InterfaceAttributes.Stability dataStabilityAttribute, InterfaceAttributes.DependencyClass dependencyClassAttribute)
          Creates an interface attribute triplet from the given attributes.
InterfaceAttributes(java.lang.String nameStabilityAttributeName, java.lang.String dataStabilityAttributeName, java.lang.String dependencyClassAttributeName)
          Creates an interface attribute triplet from the given attribute names.
 
Method Summary
 boolean equals(java.lang.Object o)
          Compares the specified object with this attribute triplet for equality.
 InterfaceAttributes.Stability getDataStability()
          Gets the stability level of the data format used by an interface and any associated data semantics.
 InterfaceAttributes.DependencyClass getDependencyClass()
          Gets the interface dependency class.
 InterfaceAttributes.Stability getNameStability()
          Gets the stabiltiy level of an interface associated with its name as it appears in a D program.
 int hashCode()
          Overridden to ensure that equal InterfaceAttributes instances have equal hashcodes.
 java.lang.String toString()
          Gets the string representation of this triplet of interface attributes.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

InterfaceAttributes

public InterfaceAttributes(InterfaceAttributes.Stability nameStabilityAttribute,
                           InterfaceAttributes.Stability dataStabilityAttribute,
                           InterfaceAttributes.DependencyClass dependencyClassAttribute)
Creates an interface attribute triplet from the given attributes.

Parameters:
nameStabilityAttribute - the stability level of the interface associated with its name in a D program
dataStabilityAttribute - stability of the data format used by the interface and any associated data semantics
dependencyClassAttribute - describes whether the interface is specific to the current operating platform or microprocessor
Throws:
java.lang.NullPointerException - if any parameter is null

InterfaceAttributes

public InterfaceAttributes(java.lang.String nameStabilityAttributeName,
                           java.lang.String dataStabilityAttributeName,
                           java.lang.String dependencyClassAttributeName)
Creates an interface attribute triplet from the given attribute names. Supports XML persistence.

Throws:
java.lang.NullPointerException - if any parameter is null
java.lang.IllegalArgumentException - if any parameter fails to match an enumerated stability value
Method Detail

getNameStability

public InterfaceAttributes.Stability getNameStability()
Gets the stabiltiy level of an interface associated with its name as it appears in a D program. For example, the execname D variable is a STABLE name: Sun guarantees this identifier will continue to be supported in D programs according to the rules described for Stable interfaces.

Returns:
the stability level of an interface associated with its name as it appears in a D program

getDataStability

public InterfaceAttributes.Stability getDataStability()
Gets the stability level of the data format used by an interface and any associated data semantics. For example, the pid D variable is a STABLE interface: process IDs are a stable concept in Solaris, and Sun guarantees that the pid variable will be of type pid_t with the semantic that it is set to the process ID corresponding to the thread that fired a given probe in accordance with the rules described for Stable interfaces.

Returns:
the stability level of the data format used by an interface and any associated data semantics.

getDependencyClass

public InterfaceAttributes.DependencyClass getDependencyClass()
Gets the interface dependency class.

Returns:
the dependency class describing whether the interface is specific to the current operating platform or microprocessor

equals

public boolean equals(java.lang.Object o)
Compares the specified object with this attribute triplet for equality. Defines equality as having the same attributes.

Overrides:
equals in class java.lang.Object
Returns:
true if and only if the specified object is also an InterfaceAttributes instance and has all the same attributes as this instance.

hashCode

public int hashCode()
Overridden to ensure that equal InterfaceAttributes instances have equal hashcodes.

Overrides:
hashCode in class java.lang.Object

toString

public java.lang.String toString()
Gets the string representation of this triplet of interface attributes. The format follows the convention described in the Interface Attributes section of the Stability chapter of the Solaris Dynamic Tracing Guide. The attributes appear in the following order, separated by slashes:

 name-stability / data-stability / dependency-class
 

Overrides:
toString in class java.lang.Object