Class DefaultIoSessionDataStructureFactory.DefaultIoSessionAttributeMap

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.concurrent.ConcurrentHashMap<java.lang.Object,​java.lang.Object> attributes  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean containsAttribute​(IoSession session, java.lang.Object key)
      void dispose​(IoSession session)
      Disposes any releases associated with the specified session.
      java.lang.Object getAttribute​(IoSession session, java.lang.Object key, java.lang.Object defaultValue)
      java.util.Set<java.lang.Object> getAttributeKeys​(IoSession session)
      java.lang.Object removeAttribute​(IoSession session, java.lang.Object key)
      Removes a user-defined attribute with the specified key.
      boolean removeAttribute​(IoSession session, java.lang.Object key, java.lang.Object value)
      Removes a user defined attribute with the specified key if the current attribute value is equal to the specified value.
      boolean replaceAttribute​(IoSession session, java.lang.Object key, java.lang.Object oldValue, java.lang.Object newValue)
      Replaces a user defined attribute with the specified key if the value of the attribute is equals to the specified old value.
      java.lang.Object setAttribute​(IoSession session, java.lang.Object key, java.lang.Object value)
      Sets a user-defined attribute.
      java.lang.Object setAttributeIfAbsent​(IoSession session, java.lang.Object key, java.lang.Object value)
      Sets a user defined attribute if the attribute with the specified key is not set yet.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • attributes

        private final java.util.concurrent.ConcurrentHashMap<java.lang.Object,​java.lang.Object> attributes
    • Constructor Detail

      • DefaultIoSessionAttributeMap

        public DefaultIoSessionAttributeMap()
        Default constructor
    • Method Detail

      • getAttribute

        public java.lang.Object getAttribute​(IoSession session,
                                             java.lang.Object key,
                                             java.lang.Object defaultValue)
        Specified by:
        getAttribute in interface IoSessionAttributeMap
        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

        public java.lang.Object setAttribute​(IoSession session,
                                             java.lang.Object key,
                                             java.lang.Object value)
        Sets a user-defined attribute.
        Specified by:
        setAttribute in interface IoSessionAttributeMap
        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

        public java.lang.Object setAttributeIfAbsent​(IoSession session,
                                                     java.lang.Object key,
                                                     java.lang.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);
         }
         
        Specified by:
        setAttributeIfAbsent in interface IoSessionAttributeMap
        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

        public java.lang.Object removeAttribute​(IoSession session,
                                                java.lang.Object key)
        Removes a user-defined attribute with the specified key.
        Specified by:
        removeAttribute in interface IoSessionAttributeMap
        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

        public boolean removeAttribute​(IoSession session,
                                       java.lang.Object key,
                                       java.lang.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;
         }
         
        Specified by:
        removeAttribute in interface IoSessionAttributeMap
        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

        public boolean replaceAttribute​(IoSession session,
                                        java.lang.Object key,
                                        java.lang.Object oldValue,
                                        java.lang.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;
         }
         
        Specified by:
        replaceAttribute in interface IoSessionAttributeMap
        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

        public boolean containsAttribute​(IoSession session,
                                         java.lang.Object key)
        Specified by:
        containsAttribute in interface IoSessionAttributeMap
        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

        public java.util.Set<java.lang.Object> getAttributeKeys​(IoSession session)
        Specified by:
        getAttributeKeys in interface IoSessionAttributeMap
        Parameters:
        session - the session for which we want the set of attributes
        Returns:
        the set of keys of all user-defined attributes.
      • dispose

        public void dispose​(IoSession session)
                     throws java.lang.Exception
        Disposes any releases associated with the specified session. This method is invoked on disconnection.
        Specified by:
        dispose in interface IoSessionAttributeMap
        Parameters:
        session - the session to be disposed
        Throws:
        java.lang.Exception - If the session can't be disposed