您的位置:首页 > 理论基础 > 数据结构算法

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能够直接取出,进行处理。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: