Package io.netty.util

Interface Attribute<T>

Type Parameters:
T - the type of the value it holds.
All Known Implementing Classes:
DefaultAttributeMap.DefaultAttribute

public interface Attribute<T>
An attribute which allows to store a value reference. It may be updated atomically and so is thread-safe.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    compareAndSet(T oldValue, T newValue)
    Atomically sets the value to the given updated value if the current value == the expected value.
    get()
    Returns the current value, which may be null
    Deprecated.
    please consider using getAndSet(Object) (with value of null).
    getAndSet(T value)
    Atomically sets to the given value and returns the old value which may be null if non was set before.
    key()
    Returns the key of this attribute.
    void
    Deprecated.
    please consider using set(Object) (with value of null).
    void
    set(T value)
    Sets the value
    setIfAbsent(T value)
    Atomically sets to the given value if this Attribute's value is null.
  • Method Details

    • key

      AttributeKey<T> key()
      Returns the key of this attribute.
    • get

      T get()
      Returns the current value, which may be null
    • set

      void set(T value)
      Sets the value
    • getAndSet

      T getAndSet(T value)
      Atomically sets to the given value and returns the old value which may be null if non was set before.
    • setIfAbsent

      T setIfAbsent(T value)
      Atomically sets to the given value if this Attribute's value is null. If it was not possible to set the value as it contains a value it will just return the current value.
    • getAndRemove

      @Deprecated T getAndRemove()
      Deprecated.
      please consider using getAndSet(Object) (with value of null).
      Removes this attribute from the AttributeMap and returns the old value. Subsequent get() calls will return null. If you only want to return the old value and clear the Attribute while still keep it in the AttributeMap use getAndSet(Object) with a value of null.

      Be aware that even if you call this method another thread that has obtained a reference to this Attribute via AttributeMap.attr(AttributeKey) will still operate on the same instance. That said if now another thread or even the same thread later will call AttributeMap.attr(AttributeKey) again, a new Attribute instance is created and so is not the same as the previous one that was removed. Because of this special caution should be taken when you call remove() or getAndRemove().

    • compareAndSet

      boolean compareAndSet(T oldValue, T newValue)
      Atomically sets the value to the given updated value if the current value == the expected value. If it the set was successful it returns true otherwise false.
    • remove

      @Deprecated void remove()
      Deprecated.
      please consider using set(Object) (with value of null).
      Removes this attribute from the AttributeMap. Subsequent get() calls will return @{code null}. If you only want to remove the value and clear the Attribute while still keep it in AttributeMap use set(Object) with a value of null.

      Be aware that even if you call this method another thread that has obtained a reference to this Attribute via AttributeMap.attr(AttributeKey) will still operate on the same instance. That said if now another thread or even the same thread later will call AttributeMap.attr(AttributeKey) again, a new Attribute instance is created and so is not the same as the previous one that was removed. Because of this special caution should be taken when you call remove() or getAndRemove().