+
+ @Override
+ public void request() {
+ if (queueStatsService != null) {
+ GetAllQueuesStatisticsFromAllPortsInputBuilder input = new GetAllQueuesStatisticsFromAllPortsInputBuilder();
+ input.setNode(getNodeRef());
+
+ requestHelper(queueStatsService.getAllQueuesStatisticsFromAllPorts(input.build()));
+ }
+ }
+
+ public void request(NodeConnectorId nodeConnectorId, QueueId queueId) {
+ if (queueStatsService != null) {
+ GetQueueStatisticsFromGivenPortInputBuilder input = new GetQueueStatisticsFromGivenPortInputBuilder();
+
+ input.setNode(getNodeRef());
+ input.setNodeConnectorId(nodeConnectorId);
+ input.setQueueId(queueId);
+
+ requestHelper(queueStatsService.getQueueStatisticsFromGivenPort(input.build()));
+ }
+ }
+
+ @Override
+ public void onDataChanged(DataChangeEvent<InstanceIdentifier<?>, DataObject> change) {
+ for (Entry<InstanceIdentifier<?>, DataObject> e : change.getCreatedConfigurationData().entrySet()) {
+ if (Queue.class.equals(e.getKey().getTargetType())) {
+ final Queue queue = (Queue) e.getValue();
+ final NodeConnectorKey key = e.getKey().firstKeyOf(NodeConnector.class, NodeConnectorKey.class);
+ logger.debug("Key {} triggered request for connector {} queue {}", key.getId(), queue.getQueueId());
+ request(key.getId(), queue.getQueueId());
+ } else {
+ logger.debug("Ignoring key {}", e.getKey());
+ }
+ }
+
+ final DataModificationTransaction trans = startTransaction();
+ for (InstanceIdentifier<?> key : change.getRemovedConfigurationData()) {
+ if (Queue.class.equals(key.getTargetType())) {
+ @SuppressWarnings("unchecked")
+ final InstanceIdentifier<Queue> queue = (InstanceIdentifier<Queue>)key;
+ final InstanceIdentifier<?> del = queue
+ .augmentation(FlowCapableNodeConnectorQueueStatisticsData.class);
+ logger.debug("Key {} triggered remove of augmentation {}", key, del);
+
+ trans.removeOperationalData(del);
+ }
+ }
+ trans.commit();
+ }
+
+ @Override
+ protected InstanceIdentifier<?> listenPath() {
+ return getNodeIdentifierBuilder().child(NodeConnector.class)
+ .augmentation(FlowCapableNodeConnector.class).child(Queue.class).build();
+ }
+
+ @Override
+ protected String statName() {
+ return "Queue";
+ }
+
+ @Override
+ public void start(final DataBrokerService dbs) {
+ if (queueStatsService == null) {
+ logger.debug("No Queue Statistics service, not subscribing to queues on node {}", getNodeIdentifier());
+ return;
+ }
+
+ super.start(dbs);
+ }
+
+ @Override
+ protected QueueStatsEntry createInvariantKey(QueueStatsEntry item) {
+ // No invariant data exist in the group description stats.
+ return item;
+ }