创建类
创建一个实现了IFloodlightModule和IOFMessageListener接口的类。其中IFloodlightModule表示这是一个floodlight模块。IOFMessageListener接口用于监听OF消息。
声明成员变量floodlightProvider。
protected IFloodlightProviderService floodlightProvider;
FloodlightProvider作为核心模块,负责将收到的OF包转换为一个个事件,而其他模块向FloodlightProvider注册,注册后成为service,然后就可以处理相应的事件。- 在getModuleDependencies()中我们告诉module loader我们这个模块依赖于 IFloodlightProviderService.class
- 在init()中初始化
floodlightProvider =context.getServiceImpl(IFloodlightProviderService.class);
- 在startUp()中告诉floodlightProvider我们想要处理packetIn消息:
floodlightProvider.addOFMessageListener(OFType.PACKET_IN, this);
加入service
- 创建一个继承了IFloodlightService的XXXservice接口,在这个接口里定义要实现的功能,然后让这个类实现这个接口。
- 为了告诉 module system我们提供XXXService这个服务,我们修改 getModuleServices() 和 getServiceImpls() 方法。
在getModuleServices()中:
Collection<Class<? extends IFloodlightService>> l
l.add(XXXService.class);
return l;
在getServiceImpls()中:
Map<Class<? extends IFloodlightService>, IFloodlightService> m
m.put(XXXService.class, this);
return m;
getServiceImpls() 告诉 module system我们就是提供service的类
为模块加入service后,模块就具有实现特定功能的方法,就能够对外提供特定的服务。
加入REST API
- 添加一个REST API服务的引用:
声明变量protected IRestApiService restApi;
IRestApiService是一个Floodlight服务,它依靠于Restlet。每一个模块只需要简单的注册IRestApiService就可以实现REST API。IRestApiService为我们处理底