首页 > 代码库 > Floodlight之 FloodlightContextStore 数据结构
Floodlight之 FloodlightContextStore 数据结构
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() {
return storage ;
}
}
-----------
public class FloodlightContextStore<V> {
@SuppressWarnings( "unchecked" )
public V get(FloodlightContext bc, String key) {
return (V)bc.storage .get(key);
}
public void put(FloodlightContext bc, String key, V value) {
bc. storage.put(key, value);
}
public void remove(FloodlightContext bc, String key) {
bc. storage.remove(key);
}
}
使用场景:
if (eth != null ) {
IFloodlightProviderService.bcStore.put(bc,IFloodlightProviderService.CONTEXT_PI_PAYLOAD, eth);
}
其中,核心接口 IFloodlightProviderService(下面是类层次图) 是Floodlight controller 和 openflow SW交互的部分,其中的成员 bcStore 存储的是解析后的packet in代表的ethenet实例,所以其他监听packet in的listeners可以直接取出,进行处理。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。