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

发布时间:2016-12-8 8:19:45 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"MINA2.0用户手册中文版--第三章 第一节 IoService接口简介",主要涉及到MINA2.0用户手册中文版--第三章 第一节 IoService接口简介方面的内容,对于MINA2.0用户手册中文版--第三章 第一节 IoService接口简介感兴趣的同学可以参考一下。

在MINA中,IoService接口提供基础的I/O服务,并负责管理I/O的Sessoin。它是MINA架构中最核心的部分之一,实现IoService的子接口和类,负责了多数低级别I/O操作的处理。 IoService的思维导图: 我们将会来看IoService接口的职责,以及它的实现类AbstractIoService的情况。第一次使用思维导图的方式来阐释会略有不同,在这之后,我们将深入内部其运作的机制。这个思维导图是通过XMind绘制的。 职责: 如上图所示,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对象(补:该对象用于提供该服务的使用情况统计信息)

上一篇:推荐2013年最佳PHP开发框架
下一篇:Jump Game II

相关文章

相关评论