方法 职责
writeInbound(Object... msgs) 将入站消息写入到EmbeddedChannel中
readInbound() 从EmbeddedChannel中读取一个入站消息,任何返回的消息都穿过了整个ChannelPipeLine
writeOutbound(Object... msgs) 将出站消息写入到EmbeddedChannel中
readOutbound() 从EmbeddedChannel中读取一个出站消息,任何返回的消息都穿过了整个ChannelPipeLine

10.1 示例

  1. //测试结果
  2. Received message:0
  3. Received Finished!
  4. Received message:1
  5. Received Finished!
  6. Received message:2
  7. Received Finished!
  8. embeddedChannel readInbound:0
  9. embeddedChannel readInbound:1
  10. embeddedChannel readInbound:2
  1. public class EmBeddedChannelTest {
  2. public static void main(String[] args) {
  3. ByteBuf byteBuf = Unpooled.buffer();
  4. for (int i = 0; i < 3; i++) {
  5. byteBuf.writeInt(i);
  6. }
  7. EmbeddedChannel embeddedChannel = new EmbeddedChannel();
  8. //获取channelPipeLine
  9. ChannelPipeline channelPipeline = embeddedChannel.pipeline();
  10. channelPipeline.addLast(new SimpleChannelInBoundHandlerTest());
  11. channelPipeline.addFirst(new DecodeTest());
  12. //写入测试数据
  13. embeddedChannel.writeInbound(byteBuf);
  14. System.out.println("embeddedChannel readInbound:"+embeddedChannel.readInbound());
  15. System.out.println("embeddedChannel readInbound:"+embeddedChannel.readInbound());
  16. System.out.println("embeddedChannel readInbound:"+embeddedChannel.readInbound());
  17. }
  18. }
  19. //解码器
  20. class DecodeTest extends ByteToMessageDecoder {
  21. @Override
  22. protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
  23. if( in.readableBytes()>=4 ){
  24. out.add(in.readInt());
  25. }
  26. }
  27. }
  28. //channelHandler
  29. class SimpleChannelInBoundHandlerTest extends SimpleChannelInboundHandler {
  30. @Override
  31. protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
  32. System.out.println("Received message:"+msg);
  33. System.out.println("Received Finished!");
  34. ctx.fireChannelRead(msg);
  35. }
  36. }

10 - EmbeddedChannel-测试ChannelHandler链的更多相关文章

  1. 【转】Java学习---10个测试框架介绍

    [原文]https://www.toutiao.com/i6594302925458113027/ JAVA 程序员需要用到 10 个测试框架和库 Java 程序员需要用到十大单元测试和自动化集成测试 ...

  2. Rspec: everyday-rspec实操: 第10章测试其他功能,第11章TDD 第12章总结。

    10.测试文件上传 作者推荐的Paperclip,官方维护组已经不推荐使用deprecated. 推荐使用rails自带的 ActiveStorage. Active Storage: 推进文件上传到 ...

  3. FreeNAS-9.10虚拟机测试安装

     虚拟机安装NreeNAS-9.10步骤 需求:网络监控磁盘要扩容 测试环境: CPU 内存 系统盘 共享盘 网卡 2核 2G 20G 20G 桥接 系统版本:FreeNAS-9.10 一.配置虚拟机 ...

  4. 在ubuntu16.10 PHP测试连接MySQL中出现Call to undefined function: mysql_connect()

    1.问题: 测试php7.0 链接mysql数据库的时候发生错误: Fatal error: Uncaught Error: Call to undefined function mysqli_con ...

  5. Delphi Berlin 10.1 for 小米平板2 (Win 10) 电子罗盘测试

    Windows 10 下没有 Sensor.HeadingXSensor.HeadingYSensor.HeadingZ 需改用 Sensor.CompMagHeading

  6. 2015.10.14-TransactionScope测试

    测试代码: ; ; List<string> lst = null; Action doSth = () => { using (var db = new TestSystemEnt ...

  7. 【10.10校内测试】【线段树维护第k小+删除】【lca+主席树维护前驱后驱】

    贪心思想.将a排序后,对于每一个a,找到对应的删除m个后最小的b,每次更新答案即可. 如何删除才是合法并且最优的?首先,对于排了序的a,第$i$个那么之前就应该删除前$i-1$个a对应的b.剩下$m- ...

  8. win10序列号 2019年10月测试

    win10序列号 N3415-266GF-AH13H-WA3UE-5HBT4 win10序列号 NPK3G-4Q81M-X4A61-D553L-NV68D win10序列号 N617H-84K11-6 ...

  9. TestNg 10. 多线程测试-xml文件实现

    代码如下: package com.course.testng.multiThread; import org.testng.annotations.Test; public class MultiT ...

随机推荐

  1. 【转】 Pro Android学习笔记(四三):Fragment(8):再谈Transaction和管理器

    目录(?)[-] Transaction的一些操作 再谈FragmentManager 调用其他fragment的方法 唤起activity 唤起fragment和相互通信 一些其它 Transact ...

  2. web攻击之八:溢出攻击(nginx服务器防sql注入/溢出攻击/spam及禁User-agents)

    一.什么是溢出攻击 首先, 溢出,通俗的讲就是意外数据的重新写入,就像装满了水的水桶,继续装水就会溢出,而溢出攻击就是,攻击者可以控制溢出的代码,如果程序的对象是内核级别的,如dll.sys文件等,就 ...

  3. linux命令学习 查找文件和文件夹

    1: 查找根目录下查找文件夹名称叫XXXX的目录地址 find / -name XXXX -d 2: 查找/var/www/目录下叫index.php的文件 find /var/www/ -name ...

  4. 集合对象与自定义javabean对象接收数据库查询的数据 (基础知识扫盲)

    一.集合对象(List,Map,数组)等对象接收数据库查询的记录,如果没有一条记录,就得到的内容为空的集合,不是null: 例如:List查不到记录得到的就是size=0的list 二.自定义的jav ...

  5. 问题:C# params类型参数;结果:C#的参数类型:params、out和ref

    C#的参数类型:params.out和ref PS:由于水平有限,难免会有错误和遗漏,欢迎各位看官批评和指正,谢谢~ 首先回顾一下C#声明一个方法的语法和各项元素,[]代表可选 [访问修饰符] 返回值 ...

  6. Javascript作用域和变量提升

    下面的程序是什么结果? var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 结果是10: 那么 ...

  7. CSS 布局_如何实现容器中每一行的子容器数量随着浏览器宽度的变化而变化?

    实现一个浮动布局,红色容器中每一行的蓝色容器数量随着浏览器宽度的变化而变化,就如下图: 要实现这样一个布局,我们首先需要如下的 HTML: <div id="float-contain ...

  8. ubuntu安装wget

    ubuntu安装wget apt-get update apt-get install wget wget --version

  9. UE mac版16.10.0.22破解

    http://bbs.feng.com/read-htm-tid-10828753.html 去官网下载原载,先运行一次,再在终端里执行下面代码就可以破解完成! printf '\x31\xC0\xF ...

  10. p2345 奶牛集会

    传送门 题目 约翰的N 头奶牛每年都会参加“哞哞大会”.哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨栅栏,摸牛仔的屁股等等.它们参加活动时会聚在一起,第i 头奶牛的坐标为Xi,没有两头奶 ...