X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-inmemory-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fstore%2Fimpl%2Fjmx%2FInMemoryDataStoreStats.java;fp=opendaylight%2Fmd-sal%2Fsal-inmemory-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fstore%2Fimpl%2Fjmx%2FInMemoryDataStoreStats.java;h=b3608eceef13d7006c007a90e6c715323d693221;hb=51cab2fd826650fa11e624ea4982dbc4a3eb332e;hp=0000000000000000000000000000000000000000;hpb=a8d731931e8d73926557150bcadf478a983ea3dc;p=controller.git diff --git a/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/jmx/InMemoryDataStoreStats.java b/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/jmx/InMemoryDataStoreStats.java new file mode 100644 index 0000000000..b3608eceef --- /dev/null +++ b/opendaylight/md-sal/sal-inmemory-datastore/src/main/java/org/opendaylight/controller/md/sal/dom/store/impl/jmx/InMemoryDataStoreStats.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2014 Brocade Communications Systems, Inc. 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.controller.md.sal.dom.store.impl.jmx; + +import java.util.concurrent.ExecutorService; + +import org.opendaylight.controller.md.sal.common.util.jmx.QueuedNotificationManagerMXBeanImpl; +import org.opendaylight.controller.md.sal.common.util.jmx.ThreadExecutorStatsMXBeanImpl; +import org.opendaylight.yangtools.util.concurrent.QueuedNotificationManager; + +/** + * Wrapper class for data store MXbeans. + * + * @author Thomas Pantelis + */ +public class InMemoryDataStoreStats implements AutoCloseable { + + private final ThreadExecutorStatsMXBeanImpl notificationExecutorStatsBean; + private final ThreadExecutorStatsMXBeanImpl dataStoreExecutorStatsBean; + private final QueuedNotificationManagerMXBeanImpl notificationManagerStatsBean; + + public InMemoryDataStoreStats(String mBeanType, QueuedNotificationManager manager, + ExecutorService dataStoreExecutor) { + + this.notificationManagerStatsBean = new QueuedNotificationManagerMXBeanImpl(manager, + "notification-manager", mBeanType, null); + notificationManagerStatsBean.registerMBean(); + + this.notificationExecutorStatsBean = new ThreadExecutorStatsMXBeanImpl(manager.getExecutor(), + "notification-executor", mBeanType, null); + this.notificationExecutorStatsBean.registerMBean(); + + this.dataStoreExecutorStatsBean = new ThreadExecutorStatsMXBeanImpl(dataStoreExecutor, + "data-store-executor", mBeanType, null); + this.dataStoreExecutorStatsBean.registerMBean(); + } + + @Override + public void close() throws Exception { + if(notificationExecutorStatsBean != null) { + notificationExecutorStatsBean.unregisterMBean(); + } + + if(dataStoreExecutorStatsBean != null) { + dataStoreExecutorStatsBean.unregisterMBean(); + } + + if(notificationManagerStatsBean != null) { + notificationManagerStatsBean.unregisterMBean(); + } + } +}