com.caucho.tools.profiler.ProfilerAdmin Maven / Gradle / Ivy
/*
* Copyright (c) 1998-2018 Caucho Technology -- all rights reserved
*
* This file is part of Resin(R) Open Source
*
* Each copy or derived work must preserve the copyright notice and this
* notice unmodified.
*
* Resin Open Source is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Resin Open Source is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
* of NON-INFRINGEMENT. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with Resin Open Source; if not, write to the
* Free SoftwareFoundation, Inc.
* 59 Temple Place, Suite 330
* Boston, MA 02111-1307 USA
*
* @author Sam
*/
package com.caucho.tools.profiler;
import com.caucho.jmx.Jmx;
import com.caucho.util.L10N;
import javax.management.ObjectName;
import javax.management.openmbean.TabularData;
import java.util.logging.Level;
import java.util.logging.Logger;
public class ProfilerAdmin
implements ProfilerMBean
{
private static final L10N L = new L10N(ProfilerAdmin.class);
private static final Logger log = Logger.getLogger(ProfilerAdmin.class.getName());
private final ProfilerManager _profilerManager;
private final ObjectName _objectName;
ProfilerAdmin(ProfilerManager profilerManager)
{
_profilerManager = profilerManager;
ObjectName objectName;
try {
objectName = Jmx.getObjectName("type=Profiler");
objectName = new ObjectName(objectName.getCanonicalName());
Jmx.register(this, objectName);
}
catch (Throwable e) {
objectName = null;
log.log(Level.FINER, e.toString(), e);
}
_objectName = objectName;
}
public ObjectName getObjectName()
{
return _objectName;
}
public boolean isEnabled()
{
return _profilerManager.isEnabled();
}
public void enable()
{
_profilerManager.enable();
}
public void disable()
{
_profilerManager.disable();
}
public void reset()
{
_profilerManager.reset();
}
// Snapshot - jmx ugh.
public TabularData snapshot()
{
return null;
}
/**
*
* XXX: need to do aggreagateTime calculation
private static final CompositeType SNAPSHOT_COMPOSITE_TYPE;
private static final TabularType SNAPSHOT_TABULAR_TYPE;
private static final String[] SNAPSHOT_COMPOSITE_TYPE_ITEM_NAMES
= new String[]{L.l("Name"),
L.l("Average Time"),
L.l("Total Time"),
L.l("Invocation Count")};
private static final String[] SNAPSHOT_COMPOSITE_TYPE_ITEM_DESCRIPTIONS
= new String[]{L.l("Name"),
L.l("Average Time in nanoseconds"),
L.l("Total Time in nanoseconds"),
L.l("Invocation Count")};
private static final OpenType[] SNAPSHOT_COMPOSITE_TYPE_ITEM_TYPES
= new OpenType[]{SimpleType.STRING,
SimpleType.LONG,
SimpleType.LONG,
SimpleType.LONG};
static {
try {
SNAPSHOT_COMPOSITE_TYPE = new CompositeType(
L.l("Profiler Snapshot Item"),
L.l(
"A snapshot of the current profiler statistics for a named profiler point."),
SNAPSHOT_COMPOSITE_TYPE_ITEM_NAMES,
SNAPSHOT_COMPOSITE_TYPE_ITEM_DESCRIPTIONS,
SNAPSHOT_COMPOSITE_TYPE_ITEM_TYPES
);
SNAPSHOT_TABULAR_TYPE = new TabularType(
L.l("Profiler Snapshot"),
L.l("A snapshot of the current profiler statistics."),
SNAPSHOT_COMPOSITE_TYPE,
new String[]{L.l("Name")});
}
catch (OpenDataException e) {
throw new AssertionError(e);
}
}
public TabularData snapshot()
throws Exception
{
ProfilerNodeComparator comparator = new TimeComparator();
comparator.setDescending(true);
TabularDataSupport tabularData = new TabularDataSupport(
SNAPSHOT_TABULAR_TYPE);
addChildren(tabularData, comparator, null, null);
return tabularData;
}
private void addChildren(TabularData tabularData,
ProfilerNodeComparator comparator,
ProfilerNode parent,
String parentName)
throws Exception
{
for (ProfilerNode child : _profilerManager.getChildProfilerNodes(parent,
comparator)) {
if (log.isLoggable(Level.FINEST))
log.finest(L.l("jmx snapshot row for {0}", child));
String childName = parentName == null
? child.getName()
: parentName + " --> " + child.getName();
Object[] compositeDataValues = new Object[]{
childName,
child.getAggregateAverageTime(),
child.getAggregateTime(),
child.getInvocationCount()
};
CompositeDataSupport compositeData = new CompositeDataSupport(
SNAPSHOT_COMPOSITE_TYPE,
SNAPSHOT_COMPOSITE_TYPE_ITEM_NAMES,
compositeDataValues);
tabularData.put(compositeData);
addChildren(tabularData, comparator, child, childName);
}
}
*/
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy