博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Floodlight 在 ChannelPipeline 图
阅读量:5949 次
发布时间:2019-06-19

本文共 1736 字,大约阅读时间需要 5 分钟。

我们知道,在Netty架构,一个ServerBootstrap用于生成server端的Channel的时候都须要提供一个ChannelPipelineFactory类型的參数,用于服务于建立连接的Channel,流水线处理来自某个client的请求。所以这里的 OpenflowPipelineFactory 就是Floodlight 为建立连接的openflow交换机创建ChannelPipeline。

1. IdleStateHandler 当Channel上没有运行对应的读写操作一定时间的时候出发一个 IdleStateEvent 事件;
2. ReadTimeoutHandler 读超时处理;
3. HandshakeTimeoutHandler 设置一个定时器检查连接的状态,握手阶段 。
4 . OFChannelHandler 核心,处理全部的业务。
代码例如以下:
public
 
class 
OpenflowPipelineFactory 
implements
 ChannelPipelineFactory {
    
protected
 Controller 
controller
 ;
    
protected
 ThreadPoolExecutor 
pipelineExecutor
 ;
    
protected
 Timer 
timer
;
    
protected
 IdleStateHandler 
idleHandler
 ;
    
protected
 ReadTimeoutHandler 
readTimeoutHandler
 ;
   
    
public
 OpenflowPipelineFactory(Controller controller,
                                   ThreadPoolExecutor pipelineExecutor) {
        
super
 ();
        
this
 .
controller 
= controller;
        
this
 .
pipelineExecutor 
= pipelineExecutor;
        
this
 .
timer 
new
 HashedWheelTimer();
        
this
 .
idleHandler 
new
 IdleStateHandler(
 timer
, 20, 25, 0);
        
this
 .
readTimeoutHandler 
new
 ReadTimeoutHandler(
timer
 , 30);
    }
 
    
@Override
    
public
 ChannelPipeline getPipeline() 
throws
 Exception {
        OFChannelState state = 
new
 OFChannelState();
       
        ChannelPipeline pipeline = Channels. pipeline();
        pipeline.addLast( 
"ofmessagedecoder"
 
new 
OFMessageDecoder());
        pipeline.addLast( 
"ofmessageencoder"
 
new 
OFMessageEncoder());
        pipeline.addLast( 
"idle"
 
idleHandler 
);
        pipeline.addLast( 
"timeout"
 
readTimeoutHandler 
);
        pipeline.addLast( 
"handshaketimeout"
 ,
                         
new
 HandshakeTimeoutHandler(state, 
timer 
, 15));
        
if
 (
pipelineExecutor 
!= 
null
)
            pipeline.addLast( 
"pipelineExecutor"
 ,
                             
new
 ExecutionHandler(
pipelineExecutor 
));
        
//OFChannelHandler 是核心
        pipeline.addLast(
 "handler" controller .getChannelHandler(state));
        
return
 pipeline;
    }
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
一个关于log4j的悲伤的故事
查看>>
PCA
查看>>
ajax上传文件
查看>>
java中通过绝对路径将图片存入数据库
查看>>
Day2-php 变量的声明
查看>>
[AutoCars(一)]自动驾驶汽车概述(下)
查看>>
C#3.0导航
查看>>
c++ string的用法
查看>>
思想笔记-01
查看>>
Beanshell 内置变量的使用
查看>>
自己写的一个简单的jQuery提示插件
查看>>
简要记录浮点型数据的二进制存储格式
查看>>
C++内存字节对齐规则
查看>>
qt sleep
查看>>
黑马程序员-JavaAPI-17天-6(增强for循环)
查看>>
P3332 [ZJOI2013]K大数查询 整体二分
查看>>
软工后续工作——增加数据库(详细设计文档4.0)
查看>>
oracle 添加序号
查看>>
BlogEngine学习系列
查看>>
arcsoft totalmedia theatre 播放电视
查看>>