IoSession
代表两个端口之间无视传输类型的连接的处理类
提供用户定义的参数,用户定义参数是会话相关的应用特定数据。它通常包含代表高等级协议状态的对象也变成在filters和handlers之间交换数据的一种方式
<调整传输类型的具体属性>
你可以简单向下转型session对象成一个合适的子类
<线程安全>
IoSession是线程安全的,但请注意同一时间调用多个write()方法会造成IoFilter的filterWrite(IoFilter.NextFilter,IoSession,WriteRequest)同时执行,因此必须保证使用的IoFilter实现类是线程安全的
<Equality of Sessions>
getId()方法完全错误,我们不能基于hashCode方法来设计一种创造唯一id的方法,不应该重写Object的equals(Object)和hashCode()方法
AttributeKey
根据类名和属性名创建一个key,得到的key将会被存储在session Map中,比如可以这样创建一个‘processor’AttributeKey
private static final AttributeKey processor = new AttributeKey(SimpleIoProcessorPool.class,"processor");
这样就会创建一个存储在session map的key:“SimpleProcessorPool.processor@7DE45C99”
这样的attributeKey主要用于debug的目的
IoSessionAttributeMap接口
存储各自IoSession的用户定义属性,所有用户定义属性的收发都在IoSessionAttributeMap实例。该接口内部实现是ConcurrentHashMap,默认实现类是DefaultIoSessionDataStructureFactory的私有静态内部类DefaultIoSessionAttributeMap