/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2008 Sun Microsystems, Inc. * Portions Copyright 2012 ForgeRock AS * */ package org.opends.server.snmp; import com.sun.management.snmp.agent.SnmpMib; import javax.management.MBeanServer; import javax.management.ObjectName; import org.opends.server.loggers.debug.DebugLogger; import org.opends.server.loggers.debug.DebugTracer; import org.opends.server.types.DebugLogLevel; /** * The class is used for representing "DsApplIfOpsEntryImpl" implementation. */ public class DsApplIfOpsEntryImpl extends DsApplIfOpsEntry implements DsEntry { /** * The serial version identifier required to satisfy the compiler because * this class implements the <CODE>java.io.Serializable</CODE> interface. * This value was generated using the <CODE>serialver</CODE> command-line * utility included with the Java SDK. */ private static final long serialVersionUID = 3876259684025799091L; /** * The debug log tracer for this class. */ private static final DebugTracer TRACER = DebugLogger.getTracer(); /** * ObjectName of the DsApplIfOpsEntry. */ private ObjectName entryName; /** * MBeanServer where the cn=monitor Connection Handler MBean are registered. */ private MBeanServer server; /** * ObjectName of the cn=monitor Connection Handler MBean. */ private ObjectName connectionHandlerName; /** * SNMPMonitor representing the gateway between SNMP MBeans and cn=monitor * MBeans. */ private SNMPMonitor monitor; /** * ObjectName of the MBeans representing the Statistics of the cn=monitor * ConnectionHandler. */ private ObjectName stats; /** * Created a DsApplIfOpsEntry in the SnmpMib. * @param mib where the entry has to be created * @param server where the corresponding cn=monitor MBean are registered * @param connectionHandlerObjectName mapping ObjectName * @param applIndex key in the DsTable * @param connectionHandlerIndex key corresponding to this entry in the * DsApplIfOpsTable */ public DsApplIfOpsEntryImpl(SnmpMib mib, MBeanServer server, ObjectName connectionHandlerObjectName, int applIndex, int connectionHandlerIndex) { super(mib); this.server = server; this.connectionHandlerName = connectionHandlerObjectName; this.ApplIndex = new Integer(applIndex); this.DsApplIfProtocolIndex = new Integer(connectionHandlerIndex); this.monitor = SNMPMonitor.getMonitor(server); } /** * Getter for the "DsApplIfProtocol" variable. * @return an OID representing the connection handler:port */ public String getDsApplIfProtocol() { String portNumber = (String)this.monitor.getAttribute (this.connectionHandlerName, "ds-connectionhandler-listener"); if (portNumber==null) { return this.DsApplIfProtocol; } else { int index = portNumber.lastIndexOf(":"); if (index==-1) { return this.DsApplIfProtocol; } return new String("1.3.6.1..27.3.") + portNumber.substring(index+1); } } /** * {@inheritDoc} * @return DsApplIfSearchOps */ @Override public Long getDsApplIfSearchOps() { if (stats == null) { stats = this.monitor.getConnectionHandlerStatistics( connectionHandlerName); } if (stats != null) { long value = Long.parseLong((String) this.monitor.getAttribute(stats, "searchRequests")); return SNMPMonitor.counter32Value(value); } else { return 0L; } } /** * {@inheritDoc} * @return DsApplIfOneLevelSearchOps */ @Override public Long getDsApplIfOneLevelSearchOps() { if (stats == null) { stats = this.monitor.getConnectionHandlerStatistics( connectionHandlerName); } if (stats != null) { long value = Long.parseLong((String) this.monitor.getAttribute(stats, "searchOneRequests")); return SNMPMonitor.counter32Value(value); } else { return 0L; } } /** * {@inheritDoc} * @return DsApplIfWholeSubtreeSearchOps */ @Override public Long getDsApplIfWholeSubtreeSearchOps() { if (stats == null) { stats = this.monitor.getConnectionHandlerStatistics( connectionHandlerName); } if (stats != null) { long value = Long.parseLong((String) this.monitor.getAttribute(stats, "searchSubRequests")); return SNMPMonitor.counter32Value(value); } else { return 0L; } } /** * {@inheritDoc} * @return DsApplIfModifyRDNOps */ @Override public Long getDsApplIfModifyRDNOps() { if (stats == null) { stats = this.monitor.getConnectionHandlerStatistics( connectionHandlerName); } if (stats != null) { long value = Long.parseLong((String) this.monitor.getAttribute( stats, "modifyDNRequests")); return SNMPMonitor.counter32Value(value); } else { return 0L; } } /** * {@inheritDoc} * @return DsApplIfModifyEntryOps */ @Override public Long getDsApplIfModifyEntryOps() { if (stats == null) { stats = this.monitor.getConnectionHandlerStatistics( connectionHandlerName); } if (stats != null) { long value = Long.parseLong((String) this.monitor.getAttribute( stats, "modifyRequests")); return SNMPMonitor.counter32Value(value); } else { return 0L; } } /** * {@inheritDoc} * @return DsApplIfRemoveEntryOps */ @Override public Long getDsApplIfRemoveEntryOps() { if (stats == null) { stats = this.monitor.getConnectionHandlerStatistics( connectionHandlerName); } if (stats != null) { long value = Long.parseLong((String) this.monitor.getAttribute( stats, "deleteRequests")); return SNMPMonitor.counter32Value(value); } else { return 0L; } } /** * {@inheritDoc} * @return DsApplIfAddEntryOps */ @Override public Long getDsApplIfAddEntryOps() { if (stats == null) { stats = this.monitor.getConnectionHandlerStatistics( connectionHandlerName); } if (stats != null) { long value = Long.parseLong((String) this.monitor.getAttribute( stats, "addRequests")); return SNMPMonitor.counter32Value(value); } else { return 0L; } } /** * {@inheritDoc} * @return DsApplIfCompareOps */ @Override public Long getDsApplIfCompareOps() { if (stats == null) { stats = this.monitor.getConnectionHandlerStatistics( connectionHandlerName); } if (stats != null) { long value = Long.parseLong((String) this.monitor.getAttribute( stats, "compareRequests")); return SNMPMonitor.counter32Value(value); } else { return 0L; } } /** * {@inheritDoc} * @return DsApplIfReadOps */ @Override public Long getDsApplIfReadOps() { return this.getDsApplIfCompareOps() + this.getDsApplIfAddEntryOps() + this.getDsApplIfRemoveEntryOps() + this.getDsApplIfModifyEntryOps() + this.getDsApplIfModifyRDNOps() + this.getDsApplIfSearchOps(); } /** * {@inheritDoc} * @return DsApplIfOutBytes */ @Override public Long getDsApplIfOutBytes() { if (stats == null) { stats = this.monitor.getConnectionHandlerStatistics( connectionHandlerName); } if (stats != null) { long value = Long.parseLong((String) this.monitor.getAttribute( stats, "bytesWritten")); return SNMPMonitor.counter32Value(value); } else { return 0L; } } /** * {@inheritDoc} * @return DsApplIfInBytes */ @Override public Long getDsApplIfInBytes() { if (stats == null) { stats = this.monitor.getConnectionHandlerStatistics( connectionHandlerName); } if (stats != null) { long value = Long.parseLong((String) this.monitor.getAttribute( stats, "bytesRead")); return SNMPMonitor.counter32Value(value); } else { return 0L; } } /** * {@inheritDoc} * @return DsApplIfProtocolIndex */ @Override public Integer getDsApplIfProtocolIndex() { return this.DsApplIfProtocolIndex; } /** * {@inheritDoc} * @return ApplIndex index of the corresponding DsTable entry */ @Override public Integer getApplIndex() { return this.ApplIndex; } /** * Returns the ObjectName of the SNMP entry MBean. * @return ObjectName of the entry */ public ObjectName getObjectName() { if (this.entryName == null) { try { String name = this.connectionHandlerName.getKeyProperty("Rdn2"); this.entryName = new ObjectName( SNMPConnectionHandlerDefinitions.SNMP_DOMAIN + "type=DsApplIfOpsEntry,name=" + name); } catch (Exception ex) { if (DebugLogger.debugEnabled()) { TRACER.debugCaught(DebugLogLevel.ERROR, ex); } return null; } } return this.entryName; } }