Interface IoSessionAttributeMap

All Known Implementing Classes:
DefaultIoSessionDataStructureFactory.DefaultIoSessionAttributeMap

public interface IoSessionAttributeMap
Stores the user-defined attributes which is provided per IoSession. All user-defined attribute accesses in IoSession are forwarded to the instance of IoSessionAttributeMap.
  • Method Details

    • getAttribute

      Object getAttribute(IoSession session, Object key, Object defaultValue)
      Parameters:
      session - the session for which we want to get an attribute
      key - The key we are looking for
      defaultValue - The default returned value if the attribute is not found
      Returns:
      the value of user defined attribute associated with the specified key. If there's no such attribute, the specified default value is associated with the specified key, and the default value is returned. This method is same with the following code except that the operation is performed atomically.
      if (containsAttribute(key)) {
          return getAttribute(key);
      } else {
          setAttribute(key, defaultValue);
          return defaultValue;
      }
      
    • setAttribute

      Object setAttribute(IoSession session, Object key, Object value)
      Sets a user-defined attribute.
      Parameters:
      session - the session for which we want to set an attribute
      key - the key of the attribute
      value - the value of the attribute
      Returns:
      The old value of the attribute. null if it is new.
    • setAttributeIfAbsent

      Object setAttributeIfAbsent(IoSession session, Object key, Object value)
      Sets a user defined attribute if the attribute with the specified key is not set yet. This method is same with the following code except that the operation is performed atomically.
      if (containsAttribute(key)) {
          return getAttribute(key);
      } else {
          return setAttribute(key, value);
      }
      
      Parameters:
      session - the session for which we want to set an attribute
      key - The key we are looking for
      value - The value to inject
      Returns:
      The previous attribute
    • removeAttribute

      Object removeAttribute(IoSession session, Object key)
      Removes a user-defined attribute with the specified key.
      Parameters:
      session - the session for which we want to remove an attribute
      key - The key we are looking for
      Returns:
      The old value of the attribute. null if not found.
    • removeAttribute

      boolean removeAttribute(IoSession session, Object key, Object value)
      Removes a user defined attribute with the specified key if the current attribute value is equal to the specified value. This method is same with the following code except that the operation is performed atomically.
      if (containsAttribute(key) && getAttribute(key).equals(value)) {
          removeAttribute(key);
          return true;
      } else {
          return false;
      }
      
      Parameters:
      session - the session for which we want to remove a value
      key - The key we are looking for
      value - The value to remove
      Returns:
      true if the value has been removed, false if the key was not found of the value not removed
    • replaceAttribute

      boolean replaceAttribute(IoSession session, Object key, Object oldValue, Object newValue)
      Replaces a user defined attribute with the specified key if the value of the attribute is equals to the specified old value. This method is same with the following code except that the operation is performed atomically.
      if (containsAttribute(key) && getAttribute(key).equals(oldValue)) {
          setAttribute(key, newValue);
          return true;
      } else {
          return false;
      }
      
      Parameters:
      session - the session for which we want to replace an attribute
      key - The key we are looking for
      oldValue - The old value to replace
      newValue - The new value to set
      Returns:
      true if the value has been replaced, false if the key was not found of the value not replaced
    • containsAttribute

      boolean containsAttribute(IoSession session, Object key)
      Parameters:
      session - the session for which wa want to check if an attribute is present
      key - The key we are looking for
      Returns:
      true if this session contains the attribute with the specified key.
    • getAttributeKeys

      Set<Object> getAttributeKeys(IoSession session)
      Parameters:
      session - the session for which we want the set of attributes
      Returns:
      the set of keys of all user-defined attributes.
    • dispose

      void dispose(IoSession session) throws Exception
      Disposes any releases associated with the specified session. This method is invoked on disconnection.
      Parameters:
      session - the session to be disposed
      Throws:
      Exception - If the session can't be disposed