--- /dev/null
+/*
+ * Copyright (c) 2016 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.vpnservice.fcapsapp.performancecounter;
+
+
+import org.opendaylight.vpnservice.fcapsappjmx.NumberOfOFPorts;
+import org.opendaylight.vpnservice.fcapsappjmx.NumberOfOFSwitchCounter;
+import org.opendaylight.vpnservice.fcapsappjmx.PacketInCounter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.management.*;
+import java.lang.String;
+import java.lang.management.ManagementFactory;
+import java.util.Map;
+
+public class PMAgent {
+ private static Logger s_logger = LoggerFactory.getLogger(PMAgent.class);
+ private MBeanServer mbs = null;
+ private ObjectName switch_mbeanName = null;
+ private ObjectName port_mbeanName = null;
+ private ObjectName pktIn_mbeanName = null;
+ private static final String SWITCH_BEANNAME = "SDNC.PM:type=NumberOfOFSwitchCounter";
+ private static final String PORTS_BEANNAME = "SDNC.PM:type=NumberOfOFPortsCounter";
+ private static final String PKTIN_BEANNAME = "SDNC.PM:type=InjectedPacketInCounter";
+
+ private static NumberOfOFSwitchCounter switchCounterBean = new NumberOfOFSwitchCounter();
+ private static NumberOfOFPorts PortcounterBean = new NumberOfOFPorts();
+ private static PacketInCounter packetInCounter = new PacketInCounter();
+
+ public PMAgent() {
+ mbs = ManagementFactory.getPlatformMBeanServer();
+ try {
+ switch_mbeanName = new ObjectName(SWITCH_BEANNAME);
+ port_mbeanName = new ObjectName(PORTS_BEANNAME);
+ pktIn_mbeanName = new ObjectName(PKTIN_BEANNAME);
+ } catch (MalformedObjectNameException e) {
+ s_logger.error("ObjectName instance creation failed for BEANAME {}", e);
+
+ }
+ }
+
+ public void registerMbeanForEFS() {
+ try {
+ if (!mbs.isRegistered(switch_mbeanName)) {
+ mbs.registerMBean(switchCounterBean, switch_mbeanName);
+ s_logger.info("Registered Mbean {} successfully", switch_mbeanName);
+ }
+
+ } catch (Exception e) {
+ s_logger.error("Registeration failed for Mbean {} :{}", switch_mbeanName, e);
+ }
+ }
+
+ public void registerMbeanForPorts() {
+ try {
+ if (!mbs.isRegistered(port_mbeanName)) {
+ mbs.registerMBean(PortcounterBean, port_mbeanName);
+ s_logger.info("Registered Mbean {} successfully", port_mbeanName);
+ }
+ } catch (Exception e) {
+ s_logger.error("Registeration failed for Mbean {} :{}", port_mbeanName, e);
+ }
+ }
+
+ public void registerMbeanForPacketIn() {
+ try {
+ if (!mbs.isRegistered(pktIn_mbeanName)) {
+ mbs.registerMBean(packetInCounter,pktIn_mbeanName);
+ s_logger.info("Registered Mbean {} successfully",pktIn_mbeanName );
+ }
+ } catch (Exception e) {
+ s_logger.error("Registeration failed for Mbean {} :{}",pktIn_mbeanName , e);
+ }
+ }
+
+ public void connectToPMAgent(Map map) {
+ switchCounterBean.updateCounter(map);
+ }
+
+ public void connectToPMAgentForNOOfPorts(Map map) {
+ PortcounterBean.updateCounter(map);
+ }
+
+ public void sendPacketInCounterUpdate(Map map){
+ packetInCounter.updateCounter(map);
+ }
+}