`
san_yun
  • 浏览: 2662273 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

netty源代码分析

 
阅读更多

这篇文章(http://san-yun.iteye.com/blog/1689608)分析了部分netty代码,下面我对netty的核心类做了记录:

 

DefaultChannelPipeline
    public void sendUpstream(ChannelEvent e);
    public void sendDownstream(ChannelEvent e){
        try {
            ((ChannelDownstreamHandler) ctx.getHandler()).handleDownstream(ctx, e);
        } catch (Throwable t) {
            notifyHandlerException(e, t);
        }
    }

SimpleChannelHandler
    public void handleUpstream(ChannelHandlerContext ctx, ChannelEvent e){
         if (e instanceof MessageEvent) {
            messageReceived(ctx, (MessageEvent) e);
        } else if (e instanceof WriteCompletionEvent) {
            WriteCompletionEvent evt = (WriteCompletionEvent) e;
            writeComplete(ctx, evt);
        } else if (e instanceof ChildChannelStateEvent) {
            ChildChannelStateEvent evt = (ChildChannelStateEvent) e;
            if (evt.getChildChannel().isOpen()) {
                childChannelOpen(ctx, evt);
            } else {
                childChannelClosed(ctx, evt);
            }
        }else if (e instanceof ExceptionEvent) {
            exceptionCaught(ctx, (ExceptionEvent) e);
        } else {
            ctx.sendUpstream(e);
        }
    }
     public void handleDownstream(ChannelHandlerContext ctx, ChannelEvent e)
            throws Exception {

        if (e instanceof MessageEvent) {
            writeRequested(ctx, (MessageEvent) e);
        } else if (e instanceof ChannelStateEvent) {
            //省略细节代码....         
        } else {
            ctx.sendDownstream(e);
        }


Channels.write()
    1.DefaultChannelPipeline.sendDownstream(e);
    2.SimpleChannelHandler.handleDownstream(e);
    3.SimpleChannelHandler.writeRequested(ctx,e);
    4.OioServerSocketPipelineSink.eventSunk(pipeline,e);
    5.OioServerSocketPipelineSink.handleAcceptedSocket(e);
    6.OioWorker.write(channel, future, message)

MessageEvent
    DownstreamMessageEvent
    UpstreamMessageEvent

分享到:
评论

相关推荐

    netty源码分析教程视频

    一个netty的入门教程以及源码分析视频,适合刚学习的人

    netty源码解析视频

    #### 五、Netty源码分析实战案例 1. **ChannelHandlerContext与ChannelHandlerAdaptor详解**: - 分析`ChannelHandlerContext`的生命周期及其与`ChannelHandler`之间的交互方式。 - 深入理解`...

    netty源码深入分析

    通过本课程的学习,开发者不仅能够掌握如何使用Netty开发高性能的应用程序,还能够学会如何阅读和理解其源代码,从而更好地进行定制化开发和故障排查。 ### Netty核心组件解析 1. **Channel**:Netty中的Channel是...

    netty源码解析视频.txt

    根据提供的文件信息,这里将对Netty源码的相关知识点进行详细解析。Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器与客户端。Netty因其优秀的性能和灵活的设计而受到...

    Netty全套学习资源(包括源码、笔记、学习文档等)

    一、Netty 源码解析 Netty 的源码是理解其工作原理的关键。通过阅读源码,我们可以了解到 Netty 如何实现高效的网络通信,例如它的非阻塞 I/O 模型、事件驱动架构、内存池管理以及编码解码器等核心组件。其中,...

    netty源码剖析视频.zip

    附带的"netty源码剖析视频.txt"文件很可能是课程大纲或笔记,可能包含每一讲的详细内容概要,如源码解析的关键点、实战项目的步骤指导等。学习者可以结合这个文本资料,对视频内容进行复习和巩固。 总之,《Netty...

    Netty源码分析总结.rar

    以上仅是Netty源码分析的一些关键点,实际的学习中还需要结合具体代码和实际案例来深入理解。在分析源码的过程中,我们通常会关注类的设计模式、线程模型、内存管理以及性能优化等方面,这对于提升网络编程和系统...

    netty源码分析buffer

    ### Netty源码分析之Buffer #### Java Buffer 的相关基础知识 **1. Java 基本数据类型** Java 提供了八种基本数据类型:`byte`, `char`, `short`, `int`, `long`, `float`, `double`, `boolean`。 - **`byte`**:...

    NIO+Netty5视频教程与Netty源码剖析视频教程

    《NIO+Netty5视频教程与Netty源码剖析视频教程》是一份全面解析网络编程框架Netty的教育资源,旨在帮助学习者深入理解和应用NIO(非阻塞I/O)以及Netty5的核心技术。该教程分为两个主要部分,分别针对理论分析和实战...

    Netty源码解析1

    通过这样的学习过程,最终目标是能够熟练掌握Netty底层原理,解决实际遇到的复杂问题,甚至有能力为Netty项目贡献代码,提出issue或实现自己的定制版Netty。 总的来说,Netty作为一款强大的网络通信框架,其源码...

    Netty权威指南-Netty源码

    总的来说,Netty 源码分析涉及了网络编程、并发处理、事件驱动、协议编解码等多个领域,对理解 Java 高性能网络应用开发有着重要的指导意义。通过阅读源码,我们可以更深入地了解 Netty 如何实现高效的网络通信,并...

    Netty5.0架构剖析和源码解读.pdf

    本文档主要讲述了Netty5.0架构剖析和源码解读,涵盖了Netty的架构、源码分析、NIO入门等方面的知识点。 概述 JAVA 的 IO 演进是一个长期的过程,从传统的 BIO 通信到 NIO 的出现,都是为了解决通信中的问题。传统...

    Netty源码解析-服务启动过程.pdf

    Netty的服务启动过程涉及到多个核心组件和步骤,下面我们通过一个简单的Netty服务器启动代码示例来进行详细的源码解析。 ##### 1. **初始化线程池** 首先,我们需要初始化两个线程池:`bossGroup` 和 `workerGroup...

    netty源码和相关中文文档

    接下来,我们谈谈 Netty 的源码分析。通过阅读 Netty 源码,我们可以深入了解其设计模式和优化策略: 1. **EventLoop(事件循环)**:Netty 使用单线程的 EventLoop 实现了事件的高效分发,减少了线程切换的开销。 ...

    【项目实战】Netty源码剖析&NIO;+Netty5各种RPC架构实战演练三部曲视频教程(未加密)

    ### Netty源码剖析与NIO及Netty5各种RPC架构实战演练三部曲知识点解析 #### 一、Netty概述 Netty是一款基于Java NIO的高性能服务器端编程框架,用于快速开发可维护的网络应用程序。它简化了网络编程的复杂性,使...

    jt808netty版解析部分源码

    源码分析: 1. **协议解析**:JT808协议的解析通常包括消息头的解析、消息体的解析以及校验码的验证。消息头包含消息类型、序列号、发送方和接收方的ID等信息。源码会定义一个类来表示JT808的消息结构,并通过...

    netty源码分析之服务端启动全解析

    Netty是一款高性能的网络应用程序框架,它使用Java编程语言开发,主要用于网络应用程序的快速和易于开发,支持TCP和UDP...通过对Netty源码的深入分析,可以更好地理解其工作机制,对开发高性能的网络应用有极大的帮助。

    netty源码+Spring源码视频教程.txt

    ### Netty源码分析 #### 1. Netty简介 Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器与客户端。其核心设计思想是简化网络编程的复杂性,并提供高度可定制化的API,...

Global site tag (gtag.js) - Google Analytics