Floodlight 在 ChannelPipeline 图

我们知道,在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;
    }
}




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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html超文本链接本页面,从HTML语言到网上家园 第三章 超文本链接(1)-网页设计,HTML/CSS...

超文本链接是 html 语言最大的特点之一,使用超文本链接可以极大的增加文件访问的灵活度,人们可以通过点击页面中的链接指针查看所需的内容,进退自如,灵活方便,这更加符合人的跳跃、交叉的思维方式。凡是浏览过网页的人…

PS景观彩色平面图技巧

1、关于水系,园林学习网 PS景观彩色平面图 水要有阴影,不过是内投影。可以用图层特效来做,也可以用高斯模糊。 要有光感,可以用退晕,也可以用滤镜打光。 2、草地 草地在红线内外一定要区分开色象和明度饱和度&#xff…

牛顿如果穿越到现在,能看懂相对论和量子力学吗?

全世界只有3.14 % 的人关注了爆炸吧知识今天要讲给大家讲一个从朋友BOSS那里听来的故事,而故事的主人公就是赫赫有名的牛顿大神。话说那一天,BOSS在牛顿的苹果树下思考人生。突然牛顿就从苹果树下的棺材里爬了出来,棺材板怎么压都压不住。于是…

【啊哈!算法】之二、插入排序

作者:jofranks 原创作品,转载请标明出处!版权所有,侵权必究! 来源:http://blog.csdn.net/jofranks 插入排序包括:直接插入排序,折半插入排序,希尔排序~! OK,下…

02Prism WPF 入门实战 - 建项

1.概要Prism介绍Github: https://github.com/PrismLibrary/Prism开发文档:https://prismlibrary.com/docs/Prism是一个框架,用于在WPF、Xamarin Forms、Uno Platform和WinUI中构建松散耦合、可维护和可测试的XAML应用程序。设计目标 为了实现下列目的&a…

rowspan 动态变化_使用colspan和rowspan动态删除html表中的多个列

好的,您的代码中的一个问题是,您删除了当前正在使用for进行迭代的单元格。我改变了你的第一个循环来完成所有反向:for (var i (rows[0].cells.length -1); i > 0; i--),从后到前...所以没有索引在删除时发生变化。第二个问题是…

[转]Linux中如何自动启动服务

linux自动启动服务很简单,最简单的是把启动命令放到/etc/rc.d/rc.local文件里。这样就可以每次启动的时候自动启动服务了。例如对于 apache,编译好apache后会在安装目录的bin下生成apachectl文件,这是个启动脚本,我们只需要把这个…

一个C实现的线程池(产品暂未运用)

https://github.com/Pithikos/C-Thread-Pool

html首页 slider图片切换效果,jQuery插件Slider Revolution实现响应动画滑动图片切换效果...

jQuery插件Slider Revolution实现响应动画滑动图片切换效果2018-12-31编程之家https://www.jb51.cc这是一款非常强大的内容切换插件,它基于jQuery,它充分响应,支持移动设备,支持手机触摸,键盘翻页;它内置幻…

Asp.Net+Jquery.Ajax详解5-$.getScript

目录(已经更新的文章会有连接,从7月25日开始,每2到3天更新一篇): Asp.NetJquery.Ajax详解1-开篇(2012.07.25发) Asp.NetJquery.Ajax详解2-$.Load(2012.07.26发) Asp.NetJ…

大数据告诉你:学历真的能改变命运!!

全世界只有3.14 % 的人关注了爆炸吧知识央视新闻曾做过关于高考的调查,结果有七成网友支持高考取消数学,看到新闻后,有一位网友却一针见血地评论道:数学考试存在的意义就是把这七成网友筛选掉。的确,虽然买菜不需要专业…

.net core 中如何有效屏蔽重复提交

咨询区 Guilherme Ferreira:我通过 post 方式向我的一个webapi中提交数据,然后插入到数据库中,在 ui端,当用户点击某一个 button 之后,代码会将 button 禁用,但因为某些原因,点击按钮的速度比禁…

小米8ios图标包下载_小米互传PC端抢先下载,免流量、高速互传,支持多设备共享...

小米早在MIUI初期就已经在开始探索手机与电脑之间互传文件的问题,MIUI"无线数据线"功能一直备受喜欢。手机与电脑之间互传,90%的用户都选择使用WX或者QQ来实现,它们互传的通道是互联网,无网时不可使用。为解决这个问题&…

sql server2008中怎样用sql语句创建数据库和数据表

这是简单用代码实现创建数据库和数据表的sql语句,如下: --调用系统数据库-- use master go /***防止你要创建的数据库同名,先把它删除掉****/ if Exists(select * from dbo.sysdatabases where nameTestDB) begin drop database TestDB end g…

[C++][IO]读写二进制文件

1. 以二进制方式读写结构体 struct Student {string name;string sex;int age; }void write(string filePath, const struct Student* stu, int n) {FILE *fp;int i;if((fpfopen(filePath,"wb"))NULL){printf("cant open the file");return;}for(i0;i<n…

HTML怎么做类似QQ聊天气泡,h5实现QQ聊天气泡的实例介绍

这篇文章主要介绍了HTML5实现QQ聊天气泡效果&#xff0c;用 HTML/CSS 做了个类似QQ的聊天气泡&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下今天自己用 HTML/CSS 做了个类似QQ的聊天气泡&#xff0c;以下是效果图&#xff1a;以下说下关键地方的样式…

高等数学的用处之一

1 只能说计算的真精准2 龙虾&#xff1a;我都准备半天了&#xff0c;你俩到底上不上&#xff1f;3 猫(≧^.^≦)&#xff1a;我为这个宿舍付出太多了&#xff01;4 请举一个日常生活中利用高等数学来解决问题的案例。5 男生做什么会让女生不开心7 人家拍的泸沽湖的水性杨花和我拍…

wp7 blogs

http://blog.csdn.net/jazywoo123/article/month/2012/04/3转载于:https://www.cnblogs.com/songtzu/archive/2012/08/09/2630573.html

k8s 查看ip地址属于哪个pod_Kubernetes Pod 如何获取 IP 地址

【编者的话】在学习 Kubernetes 网络模型的过程中&#xff0c;了解各种网络组件的作用以及如何交互非常重要。本文就介绍了各种网络组件在 Kubernetes 集群中是如何交互的&#xff0c;以及如何帮助每个 Pod 都能获取 IP 地址。Kubernetes 网络模型的核心要求之一是每个 Pod 都拥…

Fiddler抓包一键生成调用代码

首先我们的需求场景是用Fiddler抓到某个接口调用后&#xff0c;用代码来模拟调用&#xff0c;一般我们写代码会有3个步骤&#xff1a;1设置http请求相关的参数:header,method,url,cookie等2设置post的body(如果是post的话需要)3拿到返回的body(一般我们需要拿到接口的返回体进行…