All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scouter.agent.counter.CounterBasket Maven / Gradle / Ivy

/*
 *  Copyright 2015 the original author or authors. 
 *  @https://github.com/scouter-project/scouter
 *
 *  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
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License. 
 */

package scouter.agent.counter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import scouter.agent.Configure;
import scouter.lang.TimeTypeEnum;
import scouter.lang.pack.PerfCounterPack;

public class CounterBasket {
	private class Key {
		private String objName;
		private byte timeType;

		public Key(String objName, byte timeType) {
			this.objName = objName;
			this.timeType = timeType;
		}

		@Override
		public boolean equals(Object obj) {
			if (obj instanceof Key) {
				Key k = (Key) obj;
				return this.objName.equals(k.objName) && this.timeType==k.timeType;
			}
			return false;
		}

		@Override
		public int hashCode() {

			return objName.hashCode() ^ timeType;
		}
	}

	private Map table = new HashMap();

	public PerfCounterPack getPack(String objName, byte timeType) {
		Key key = new Key(objName, timeType);
		PerfCounterPack p = table.get(key);
		if (p == null) {
			p = new PerfCounterPack();
			p.objName = objName;
			p.timetype = timeType;
			table.put(key, p);
		}
		return p;
	}

	public PerfCounterPack getPack(byte timeType) {
		return getPack(Configure.getInstance().getObjName(), timeType);
	}

	public PerfCounterPack[] getList() {
		ArrayList list =  new ArrayList(table.values());
		return (PerfCounterPack[])list.toArray(new PerfCounterPack[list.size()]);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy