/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/
package org.ebayopensource.turmeric.runtime.common.impl.internal.monitoring;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.ebayopensource.turmeric.runtime.common.monitoring.MetricsStorageProvider;
/**
* @author wdeng
*/
public final class MonitoringDesc {
private final long m_snapshotInterval;
private final Map<String, StorageProviderDesc> m_providerDescs;
private final List<MetricsStorageProvider> m_providers;
public MonitoringDesc(long snapshotInterval, Map<String, StorageProviderDesc> providerDescs) {
m_snapshotInterval = snapshotInterval;
m_providerDescs = Collections.unmodifiableMap(providerDescs);
m_providers = Collections.unmodifiableList(buildProviderList());
}
public long getSnapshotInterval() {
return m_snapshotInterval;
}
public Collection<StorageProviderDesc> getAllProviderDescs() {
return m_providerDescs.values();
}
/**
* Returns the list of all the registered service metrics storage provider.
*/
public Collection<MetricsStorageProvider> getAllProviders() {
return m_providers;
}
private ArrayList<MetricsStorageProvider> buildProviderList() {
ArrayList<MetricsStorageProvider> providers = new ArrayList<MetricsStorageProvider>(m_providerDescs.size());
for (Iterator<StorageProviderDesc> it=m_providerDescs.values().iterator(); it.hasNext();) {
StorageProviderDesc desc = it.next();
providers.add(desc.getProvider());
}
return providers;
}
}