`
blueswind8306
  • 浏览: 126104 次
  • 来自: ...
社区版块
存档分类
最新评论

Mina1.1.7 Decoder逻辑

阅读更多
CumulativeProtocolDecoder.decode()

拿到IoSession中的ByteBuffer,如果有则设置usingSessionBuffer=true并且读取这个ByteBuffer;否则设置usingSessionBuffer=false,并且从网络流中读取ByteBuffer。

循环调用doDecode()方法进行解码,直到解码失败(doDecode返回false)或者解码成功并且刚好读取完当前的ByteBuffer。

如果还有没读取完的数据,则将数据拷贝到IoSession中的ByteBuffer头部;否则移除IoSession中的ByteBuffer,为下一次解码做准备。

ProtocolDecoderImpl.doDecode()

遍历所有decoder,调用具体的decodable()方法,返回状态为:
MessageDecoder.OK:确定当前使用的decoder。
MessageDecoder.NOT_OK:undecodables计数器增加1,如果undecodables个数等于decoder个数时,抛出异常。
MessageDecoder.NEED_DATA:返回false告诉CumulativeProtocolDecoder.decode()方法解码失败,等待更多数据。

注意调用decodable()方法后会还原ByteBuffer的position和limit。

调用具体的decode()方法,返回状态为:
MessageDecoder.OK:返回true告诉CumulativeProtocolDecoder.decode()方法解码成功。
MessageDecoder.NOT_OK:抛出异常。
MessageDecoder.NEED_DATA:返回false告诉CumulativeProtocolDecoder.decode()方法解码失败,等待更多数据。
0
0
分享到:
评论

相关推荐

    Mina 1.1.7 示例源码(apache.mina.example)

    在Mina 1.1.7版本中,提供的示例源码是学习和理解Mina框架工作原理及其实现各种网络协议的重要资源。这个压缩包"apache.mina.example"包含了一系列的示例项目,可以帮助开发者快速上手并深入理解Mina。 1. **Mina...

    Mina 1.1.7核心代码(apache.mina.core)

    在这个"Mina 1.1.7核心代码"项目中,我们可以深入理解MINA的核心机制和组件。 MINA的核心组件主要包括以下部分: 1. **IoSession**: 这是MINA中最基础的数据容器,代表了服务端与客户端之间的连接。IoSession存储...

    mina-1.1.7.zip

    《mina-1.1.7.zip:Java开源通信框架详解》 mina,全称为Apache MINA(Multipurpose Infrastructure for Network Applications),是一个用Java语言编写的高性能、跨平台的网络应用程序开发框架。MINA的设计目标是...

    Mina-1.1.7.jar

    Mina的设计理念是将网络通信的各种复杂性隐藏在底层,让开发者能够专注于业务逻辑。它基于Io(Input/Output)模型,提供了基于事件的非阻塞I/O机制,极大地提升了服务器处理并发请求的能力。这种设计允许服务器在...

    mina-1.1.7.tar(1).gz稳定版

    MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架。通过使用MINA框架可以可以省下处理底层I/O和线程并发等复杂工作,开发人员能够把更多的精力投入...

    mina-core-1.1.7.jar

    java运行依赖jar包

    mina-integration-jmx-1.1.7.jar

    mina-integration-jmx-1.1.7.jar openfire 需要jar

    apache-mina-2.0.4.rar_apache mina_mina

    Apache Mina的核心理念是提供一个简洁的API,使得开发者能够专注于业务逻辑,而不是网络通信的底层细节。它基于Java NIO(非阻塞I/O)构建,允许在高并发场景下高效地处理连接和数据传输。Mina支持多种网络协议,如...

    mina的高级使用,mina文件图片传送,mina发送文件,mina报文处理,mina发送xml和json

    在接收端,这些对象会被反序列化,从而可以进行业务逻辑处理。Mina的ProtocolDecoder和ProtocolEncoder接口是实现这一过程的关键。 5. **Mina发送XML和JSON** XML和JSON作为常见的数据交换格式,经常在分布式系统...

    mina-1.1.7.rar_网络编程_Java_

    标题中的"mina-1.1.7.rar"表明这是一个 MINA 框架的特定版本,1.1.7,通常包含源码、文档、示例代码和相关的库文件。这个版本可能包含了针对前一版本的改进和修复,旨在提高性能、稳定性和功能。 描述中提到"非常好...

    mina使用mina使用mina使用

    Mina的目标是简化网络编程,使得开发者可以专注于业务逻辑,而无需深入理解底层I/O操作的复杂性。 **一、Mina简介** Mina框架支持多种协议,如TCP/IP、UDP/IP、SSL/TLS等,因此常被用于构建服务器端应用,如FTP、...

    openfire3.10.1源码编译缺少的jar包

    mina-core-1.1.7-sources.jar mina-filter-compression-1.1.7-sources.jar mina-filter-ssl-1.1.7-sources.jar mina-filter-ssl.jar slf4j-api-1.5.8-sources.jar slf4j-log4j12-1.5.8-sources.jar Openfire3.10...

    mina连接 mina心跳连接 mina断线重连

    Apache Mina是一个开源的网络通信框架,常用于构建高性能、高效率的服务端应用程序,尤其在Java平台上。在本文中,我们将深入探讨Mina的核心概念,包括连接管理、心跳机制以及断线重连策略。 首先,让我们理解"Mina...

    MINA_API+MINA_DOC+mina

    MINA (Java IO Network Application Framework) 是一个由Apache软件基金会开发的开源网络通信框架,主要应用于构建高性能、高可用性的网络服务器。这个压缩包包含了MINA API文档、自学手册以及开发指南,对于学习和...

    mina+spring实现多人聊天室程序

    Mina的Decoder和Encoder将负责将这些协议数据转化为可处理的对象,以便于业务逻辑层进行处理。同时,Spring的AOP可以用来实现消息的安全性和日志记录。 在业务逻辑层,我们可以使用Spring的Service和Repository组件...

    Mina开发实例(服务端、客户端)DEMO

    Apache Mina是一个高度可扩展的网络通信框架,它允许开发者创建高性能、高效率的服务端和客户端应用程序。在Java世界中,Mina以其简洁的API和灵活性而受到青睐,尤其适用于处理大量的并发连接,如TCP/IP和UDP协议。...

    Android-MinaSocket一款基于Mina的Socket长连接库

    Mina的核心设计思想是将网络通信的核心逻辑与业务逻辑分离,通过事件驱动模型和I/O多路复用技术,实现了高性能的非阻塞I/O。 在`Android-MinaSocket` 库中,开发者可以便捷地创建和管理长连接,其核心特性包括: 1...

    mina.zip内涵所有mina所需jar包

    Mina的核心理念是将网络协议处理与业务逻辑分离,使得开发者可以专注于实现应用程序的业务功能,而无需关心底层网络通信的细节。 标题中的"mina.zip内涵所有mina所需jar包"表明,这个压缩文件包含了运行Apache Mina...

Global site tag (gtag.js) - Google Analytics