zoukankan      html  css  js  c++  java
  • Mina Basics 03-IoService

     第三章IoService

    MINA IoService - 如应用程序体系结构一章所示,是支持所有IO服务的基类,可以是服务器端,也可以是客户端。

    它将处理与您的应用程序以及远程对等方的所有交互,发送和接收消息,管理会话,连接等。

    它是一个接口,实现为服务器端的IoAcceptor和客户端的IoConnector。

    我们将在这些章节中解释这些接口:

    1. IoService简介
    2. IoService详细信息
    3. IoAcceptor
    4. IoConnector

    IoService简介

    IoService提供基本的I / O服务并管理MINA中的I / O会话。它是MINA Architecture最重要的部分之一。 IoService和子接口的实现类是处理大多数低级I / O操作的地方。

    IoService思维导图

    让我们试着看看IoService的职责是什么,它实现了AbstractIoService类。让我们采用略微不同的方法,首先使用思维导图,然后跳入内部工作。思维导图是使用XMind创建的。

     

    职责

    如上图所示,IoService有许多责任:

    1. 会话管理:创建和删除会话,检测空闲。
    2. 过滤链管理:处理过滤链,允许用户即时更改链
    3. 调用处理程序:在收到一些新消息时调用处理程序等
    4. 统计管理:更新发送的消息数,发送的字节数以及许多其他消息
    5. 监听管理:管理可以设置的监听
    6. 通信管理:处理双方的数据传输

    所有这些方面将在以下章节中描述。

    接口细节

             IoService是所有IoConnector和IoAcceptor的基本接口,提供I / O服务和管理I / O会话。该接口具有执行I / O相关操作所需的所有功能。

        让我们深入了解界面中的各种方法:

    • getTransportMetadata()
    • addListener()
    • removeListener()
    • isDisposing()
    • isDisposed()
    • dispose()
    • getHandler()
    • setHandler()
    • getManagedSessions()
    • getManagedSessionCount()
    • getSessionConfig()
    • getFilterChainBuilder()
    • setFilterChainBuilder()
    • getFilterChain()
    • isActive()
    • getActivationTime()
    • broadcast()
    • setSessionDataStructureFactory()
    • getScheduledWriteBytes()
    • getScheduledWriteMessages()
    • getStatistics()

    getTransportMetadata()

    此方法返回IoAcceptor或IoConnector正在运行的传输元数据。典型的细节包括提供者名称(nio,apr,rxtx),连接类型(无连接/面向连接)等。

    addListener

    允许添加IoServiceListener以侦听与IoService相关的特定事件。

    removeListener

    删除附加到此IoService的指定IoServiceListener。

    isDisposing

    此方法告知当前是否正在处理该服务。由于可能需要一段时间,因此了解服务的当前状态很有用。

    isDisposed

    此方法告知服务是否已被处置。只有在已分配的所有资源都已释放时,才会将服务视为已处置

    dispose

    此方法释放服务已分配的所有资源。由于可能需要一段时间,用户应使用isDisposing()和isDisposed()检查服务状态,以了解服务现在是否已完全处理。

    关闭服务时务必调用dispose()!

    getHandler

    返回与服务关联的IoHandler。

    setHandler

    设置将负责处理服务的所有事件的IoHandler。处理程序包含您的应用程序逻辑

    getManagedSessions

    返回此服务当前管理的所有会话的映射。托管会话是添加到服务侦听器的会话。它将用于处理空闲会话和其他会话方面,具体取决于用户添加到服务的侦听器的类型。

    getManagedSessionCount

    返回此服务当前管理的所有会话的数量。

    getSessionConfig

    返回会话配置。

    getFilterChainBuilder

    返回Filter链构建器。如果想要添加一些将在创建会话时注入的新过滤器,这将非常有用。

    setFilterChainBuilder

    定义要与服务一起使用的过滤器链构建器。

    getFilterChain

    返回服务的当前默认Filter链。

    isActive

    判断服务是否处于活动状态。

    getActivationTime

    返回激活此服务的时间。如果服务不再处于活动状态,它将返回上次激活此服务的时间。

    broadcast

    将给定消息写入所有托管会话。

    setSessionDataStructureFactory

    设置IoSessionDataStructureFactory,为此服务创建的新会话提供相关的数据结构。

    getScheduledWriteBytes

    返回计划写入的字节数(即存储在内存中的字节,等待套接字准备写入)。

    getScheduledWriteMessages

    返回计划写入的消息数(即存储在内存中的消息,等待套接字准备写入)。

    getStatistics

    返回此服务的IoServiceStatistics对象。

    IoService详细信息

    IoService是一个由MINA中最重要的两个类实现的接口:

    • IoAcceptor
    • IoConnector

    为了构建服务器,您需要选择IoAcceptor接口的实现。对于客户端应用程序,您需要实现IoConnector接口的实现。

    IoAcceptor

    基本上,此接口由于accept()方法而命名,负责在客户端和服务器之间创建新连接。服务器接受传入的连接请求。

    在某些时候,我们可以将此接口命名为“Server”(这是即将推出的MINA 3.0中的新名称)。

    由于我们可能处理多种传输(TCP / UDP / ...),因此我们为此接口提供了多个实现。你不太可能需要实现一个新的。

    我们有很多实现类:

    1.NioSocketAcceptor:非阻塞的Socket传输IoAcceptor

    2.NioDatagramAcceptor:非阻塞UDP传输IoAcceptor

    3.AprSocketAcceptor:阻塞Socket传输IoAcceptor,基于APR

    4.VmPipeSocketAcceptor:in-VM IoAcceptor

    只需挑选一个适合您需求的产品。

    这是IoAcceptor接口和类的类图:

       

    IoConnector

    由于我们必须为服务器使用IoAcceptor,因此必须为客户端实现IoConnector。同样,我们有许多实现类:

      1. NioSocketConnector:非阻塞Socket传输IoConnector

      2. NioDatagramConnector:非阻塞UDP传输IoConnector

      3. AprSocketConnector:基于APR的阻塞Socket传输IoConnector

      4. ProxyConnector:提供代理支持的IoConnector

      5. SerialConnector:用于串行传输的IoConnector

      6. VmPipeConnector:VM内IoConnector

    只需挑选一个适合您需求的产品

    以下是IoConnector接口和类的类图:

     

    参考 : http://mina.apache.org/mina-project/userguide/ch3-service/ch3-service.html

  • 相关阅读:
    洛谷P1446/BZOJ1004 Cards Burnside引理+01背包
    HDU-4676 Sum Of Gcd 莫队+欧拉函数
    HDU-5378 概率DP
    HDU-5628 Clarke and math-狄利克雷卷积+快速幂
    容斥原理+补集转化+MinMax容斥
    2019牛客暑期多校训练营(第九场)A.The power of Fibonacci
    斐波那契额数列的性质
    莫比乌斯反演/线性筛/积性函数/杜教筛/min25筛 学习笔记
    广义Fibonacci数列找循环节 学习笔记
    苗条的生成树 Slim Span--洛谷
  • 原文地址:https://www.cnblogs.com/fubinhnust/p/9941077.html
Copyright © 2011-2022 走看看