我从openflow示例(学习开关)复制了一些代码,以便在交换机连接时收到通知,但现在,我收到很多通知 . 这是我注册监听器的代码:
WakeupOnNode wakeupListener = new WakeupOnNode(s);
final InstanceIdentifier<Table> instanceIdentifier = InstanceIdentifier.builder(Nodes.class).child(Node.class).
augmentation(FlowCapableNode.class).child(Table.class).build();
final DataTreeIdentifier<Table> dataTreeIdentifier =
new DataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, instanceIdentifier);
this.dataTreeChangeListenerRegistration = this.dataBroker.registerDataTreeChangeListener(dataTreeIdentifier, wakeupListener);
我在监听器中看到多个通知 . 不知道为什么会这样 . 也许我需要听一些其他标识符(?)
在此先感谢您的帮助 .
朗高
1 回答
您正在侦听OpenFlow表更新,每次openflow事件影响交换机上的表时,都会通知您 . 所以你不是在听正确的课程 .
如果您已经停在
InstanceIdentifier.builder(Nodes.class).child(Node.class)
,则每次更新,添加或删除交换机时都会收到通知 . 这听起来像是您正在寻找的通知 . 就个人而言,这是我用来监听拓扑上的新节点的类 .但请注意,您仍会收到很多通知 .
由于此通知(
Node.class
)更通用,您可能不得不忽略大量'Update'通知;这是正常的,因为这将包括您当前正在侦听的类的所有'Update'通知(表包含在Node中) .