Bug 1764 - moved Session related interfaces to openflowplugin-api
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / lldp / LLDPSpeakerPopListener.java
1 /**
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.openflowplugin.openflow.md.lldp;
9
10 import org.opendaylight.openflowplugin.api.openflow.md.queue.PopListener;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorUpdated;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortState;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder;
19 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
20
21 public class LLDPSpeakerPopListener<T> implements PopListener<T> {
22
23
24     @Override
25     public void onPop(T processedMessage) {
26         if (processedMessage instanceof NodeConnectorUpdated) {
27             NodeConnectorUpdated connector = (NodeConnectorUpdated) processedMessage;
28             FlowCapableNodeConnectorUpdated flowConnector = connector.<FlowCapableNodeConnectorUpdated>getAugmentation(FlowCapableNodeConnectorUpdated.class);
29             if (flowConnector != null) {
30                 InstanceIdentifier<NodeConnector> nodeConnectorInstanceId = (InstanceIdentifier<NodeConnector>) connector.getNodeConnectorRef().getValue();
31                 NodeConnectorBuilder ncb = new NodeConnectorBuilder(connector);
32                 FlowCapableNodeConnectorBuilder fcncb = new FlowCapableNodeConnectorBuilder(flowConnector);
33                 ncb.addAugmentation(FlowCapableNodeConnector.class, fcncb.build());
34                 PortState portState = flowConnector.getState();
35                 PortConfig portConfig = flowConnector.getConfiguration();
36                 if ((portState == null || !portState.isLinkDown()) && (portConfig == null || !portConfig.isPORTDOWN())) {
37                     LLDPSpeaker.getInstance().addNodeConnector(nodeConnectorInstanceId, ncb.build());
38                 } else {
39                     LLDPSpeaker.getInstance().removeNodeConnector(nodeConnectorInstanceId, ncb.build());
40                 }
41             }
42         }
43     }
44
45 }