Floodlight之 FloodlightContextStore 数据结构
2016-02-05 13:08
621 查看
FloodlightContextStore 代表的是一种缓存模型(利用的是ConcurrentHashMap)。里面存储的是上下文相关的对象,可以依据对应的key得到详细的 Object。存在的意义是Floodlight中注冊监听某个事件的listener可以在被调用的时候直接从中取出上下文信息(context information)。以下是重要的代码片段.
基本数据结构:
public class FloodlightContext
{
protected ConcurrentHashMap<String,
Object> storage =
new ConcurrentHashMap<String,
Object>();
public ConcurrentHashMap<String,
Object> getStorage() {
[align=left] return storage ;[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]-----------[/align]
public class FloodlightContextStore<V>
{
[align=left] [/align]
[align=left] @SuppressWarnings( "unchecked" )[/align]
public V
get(FloodlightContext bc, String key) {
[align=left] return (V)bc.storage .get(key);[/align]
[align=left] }[/align]
[align=left] [/align]
public void put(FloodlightContext
bc, String key, V value) {
bc. storage.put(key,
value);
[align=left] }[/align]
[align=left] [/align]
public void remove(FloodlightContext
bc, String key) {
[align=left] bc. storage.remove(key);[/align]
[align=left] }[/align]
[align=left]}[/align]
使用场景:
if (eth != null )
{
[align=left] IFloodlightProviderService.bcStore.put(bc,IFloodlightProviderService.CONTEXT_PI_PAYLOAD, eth);[/align]
[align=left]}[/align]
当中。核心接口 IFloodlightProviderService(以下是类层次图) 是Floodlight controller 和 openflow SW交互的部分,当中的成员 bcStore 存储的是解析后的packet in代表的ethenet实例,所以其它监听packet in的listeners能够直接取出,进行处理。
基本数据结构:
public class FloodlightContext
{
protected ConcurrentHashMap<String,
Object> storage =
new ConcurrentHashMap<String,
Object>();
public ConcurrentHashMap<String,
Object> getStorage() {
[align=left] return storage ;[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]-----------[/align]
public class FloodlightContextStore<V>
{
[align=left] [/align]
[align=left] @SuppressWarnings( "unchecked" )[/align]
public V
get(FloodlightContext bc, String key) {
[align=left] return (V)bc.storage .get(key);[/align]
[align=left] }[/align]
[align=left] [/align]
public void put(FloodlightContext
bc, String key, V value) {
bc. storage.put(key,
value);
[align=left] }[/align]
[align=left] [/align]
public void remove(FloodlightContext
bc, String key) {
[align=left] bc. storage.remove(key);[/align]
[align=left] }[/align]
[align=left]}[/align]
使用场景:
if (eth != null )
{
[align=left] IFloodlightProviderService.bcStore.put(bc,IFloodlightProviderService.CONTEXT_PI_PAYLOAD, eth);[/align]
[align=left]}[/align]
当中。核心接口 IFloodlightProviderService(以下是类层次图) 是Floodlight controller 和 openflow SW交互的部分,当中的成员 bcStore 存储的是解析后的packet in代表的ethenet实例,所以其它监听packet in的listeners能够直接取出,进行处理。
相关文章推荐
- 单源最短路径之Bellman-Ford 算法
- 数据结构实验之二叉树六:哈夫曼编码
- Nginx源码分析 - 基础数据结构篇 - 单向链表结构 ngx_list.c
- 数据结构之红黑树与平衡二叉树
- 数据结构(3)--线性表实现一元多项式加法
- 【BZOJ4370】【IOI2015】horses 数据结构 平衡树+线段树
- 小蚂蚁学习数据结构(29)——图的存储表示
- 学习笔记------数据结构(C语言版)栈和递归 汉诺塔
- AC自动机入门
- 数据结构(2)--线性表单链表的主要操作的实现
- 数据结构之AVL树
- 微信涉及的重要数据结构-2
- Codevs_P2048 数据结构 2(SplayTree区间翻转)
- 微信涉及的重要数据结构-1
- 数据结构-队列之间的函数调用
- 学习笔记------数据结构(C语言版)栈应用 表达式求值
- 数据结构基础之队列
- [数据结构与算法分析] 栈的数组实现
- Codevs_P2047 数据结构 1(SplayTree)
- 数据结构图文解析之:AVL树详解及C++模板实现