Floodlight 中 ChannelPipeline 结构图

我们知道在Netty架构中,当创建一个ServerBootstrap用于生成服务器端的Channel的时候都需要提供一个ChannelPipelineFactory类型的参数,用于服务于建立连接的Channel,流水线处理来自某个客户端的请求。所以这里的 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;
    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值