MINA2.0用户手册中文版--第三章 第一节 IoService接口简介

(补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-12-15,强烈建议看 原文 )
在MINA中,IoService接口提供基础的I/O服务,并负责管理I/O的Sessoin。它是MINA架构中最核心的部分之一,实现IoService的子接口和类,负责了多数低级别I/O操作的处理。
IoService的思维导图:
我们将会来看IoService接口的职责,以及它的实现类AbstractIoService的情况。第一次使用思维导图的方式来阐释会略有不同,在这之后,我们将深入内部其运作的机制。这个思维导图是通过XMind绘制的。
MINA2.0用户手册中文版--第三章 第一节 IoService接口简介_第1张图片
职责:
如上图所示,IoService接口有很多职责:
  • 会话管理:创建和删除session,并监测session的空闲
  • 过滤器链管理:处理过滤器链,允许用户更改过滤器链
  • 处理程序调用:当有新的消息被接收等情况发生时就调用处理程序
  • 统计管理:更新消息发送,数据流发送或其他相关信息的数量
  • 监听器管理:管理用户可以设置的监听器
  • 通信管理:处理客户端和服务端的数据传输
所有这些方面的情况将在后续章节详细描述。

IoService接口的详细信息:
IoService是所有提供I/O服务和管理I/O会话的IoConnector和IoAcceptor的父接口,它提供了执行I/O相关操作所需的所有功能。
让我们来深入的看下该接口的不同方法:
  • getTransportMetadata()
  • addListener()
  • removeListener()
  • isDisposing()
  • isDisposed()
  • dispose()
  • getHandler()
  • setHandler()
  • getManagedSessions()
  • getManagedSessionCount()
  • getSessionConfig()
  • getFilterChainBuilder()
  • setFilterChainBuilder()
  • getFilterChain()
  • isActive()
  • getActivationTime()
  • broadcast()
  • setSessionDataStructureFactory()
  • getScheduledWriteBytes()
  • getScheduledWriteMessages()
  • getStatistics()

  • (补:下面“补”的部分,主要是参考了MINA-2.0.7的API)

    getTransportMetadata

    该方法返回正在运行的IoAcceptor或IoConnector传输相关的元数据TransportMetadata,典型的信息如包括服务提供者的名字(nio,apr,rxtx)和连接类型(可靠连接和不可靠连接)等。

    addListener

    该方法允许通过添加一个IoServiceListener来监听IoService相关的特殊事件

    removeListener

    该方法可以移除一个IoService附属的特殊的IoServiceListener

    isDisposing

    该方法返回服务资源目前是否在释放,它可能需要一小段时间,该方法用于获取当前的服务状态。(补:只有当方法dispose()被调用时才会返回true)

    isDisposed

    该方法返回服务资源是否已经被释放,一个服务只有在它所申请的所有资源都被释放掉之后,才被认为是已释放状态。(补:只有当该服务相关所有的资源都已经被释放才会返回true)

    dispose

    该方法会释放掉所有该服务申请的资源,它可能会执行一小段时间,用户需要通过isDisposing()和isDisposed方法来确认该服务是否已经执行完成。当一个服务被关闭时总是会调用该方法。

    getHandler

    该方法返回该服务的处理者IoHandler

    setHandler

    该方法用于设置服务的处理者IoHandler,这个被设置的IoHandler包含应用的业务逻辑,并将负责处理该服务的所有的事件

    getManagedSessions

    该方法返回该服务当前所管理的所有session组成的一个Map(补:Map的Key是session的ID),被管理的session是被认为已经添加到服务的监听器中的session。该方法主要用于处理空闲session,而session其他方面的处理则由用户为该服务添加的其他相关监听器来处理。

    getManagedSessionCount

    该方法返回服务当前所管理的所有的session的总数量

    getSessionConfig

    该方法返回session的配置(补:当一个服务创建一个新session时会给session默认分配好配置)

    getFilterChainBuilder

    该方法返回该服务的过滤器链建造器

    setFilterChainBuilder

    该方法用于设置该服务的过滤器链建造器(补:过滤器链构造器   IoFilterChainBuilder会在该服务创建任何一个session时为该session生成一个   IoFilterChain个,如果这里设置为null,则会将其设置为默认的不包含任何过滤器的空的 DefaultIoFilterChainBuilder)。

    getFilterChain

    该方法返回该服务的当前的过滤器链建造器【补:该方法是  (DefaultIoFilterChainBuilder ) getFilterChainBuilder()的简写版本,要注意的是返回的对象不是一个IoFilterChain,而是   DefaultIoFilterChainBuilder,修改这个返回的建造器不会影响所有已存在的session,因为 IoFilterChainBuilder只会在新建session时产生作用】

    isActive

    该方法返回该服务是否处于激活状态

    getActivationTime

    该方法返回该服务被激活的时间;如果该服务当前处于非激活状态,则返回最后一次被激活的时间。

    broadcast

    该方法将给定消息广播给该服务所管理的所有客户端

    setSessionDataStructureFactory

    该方法用于设置接口IoSessionDataStructureFactory——该接口主要用于在该服务创建一个新Session时为其提供相关的数据结构

    getScheduledWriteBytes

    该方法返回该服务预定将要写的字节的总数量(即存在内存中的等待Socket去写的字节总数)

    getScheduledWriteMessages

    该方法返回该服务预定将要写的消息的总数量(即存在内存中的等待Socket去写的消息总数)

    getStatistics

    该方法返回该服务的IoServiceStatistics对象(补:该对象用于提供该服务的使用情况统计信息)

    你可能感兴趣的:(MINA2.0用户手册中文版--第三章 第一节 IoService接口简介)