/* * Copyright (c) 2008-2012, Hazel Bilisim Ltd. 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 * * 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 com.hazelcast.impl.monitor; import com.hazelcast.monitor.LocalMapOperationStats; import com.hazelcast.monitor.LocalMapStats; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.util.concurrent.atomic.AtomicLong; public class LocalMapStatsImpl extends LocalInstanceStatsSupport<LocalMapOperationStats> implements LocalMapStats { private final AtomicLong lastAccessTime = new AtomicLong(); private final AtomicLong hits = new AtomicLong(); private long ownedEntryCount; private long backupEntryCount; private long markedAsRemovedEntryCount; private long ownedEntryMemoryCost; private long backupEntryMemoryCost; private long markedAsRemovedMemoryCost; private long creationTime; private long lastUpdateTime; private long lastEvictionTime; private long lockedEntryCount; private long lockWaitCount; private long dirtyEntryCount; enum Op { CREATE, READ, UPDATE, REMOVE, LOCK, UNLOCK, ADD_LOCK_WAIT, REMOVE_LOCK_WAIT } public LocalMapStatsImpl() { } void writeDataInternal(DataOutput out) throws IOException { out.writeLong(lastAccessTime.get()); out.writeLong(hits.get()); out.writeLong(ownedEntryCount); out.writeLong(backupEntryCount); out.writeLong(markedAsRemovedEntryCount); out.writeLong(ownedEntryMemoryCost); out.writeLong(backupEntryMemoryCost); out.writeLong(markedAsRemovedMemoryCost); out.writeLong(creationTime); out.writeLong(lastUpdateTime); out.writeLong(lastEvictionTime); out.writeLong(lockedEntryCount); out.writeLong(lockWaitCount); out.writeLong(dirtyEntryCount); } void readDataInternal(DataInput in) throws IOException { lastAccessTime.set(in.readLong()); hits.set(in.readLong()); ownedEntryCount = in.readLong(); backupEntryCount = in.readLong(); markedAsRemovedEntryCount = in.readLong(); ownedEntryMemoryCost = in.readLong(); backupEntryMemoryCost = in.readLong(); markedAsRemovedMemoryCost = in.readLong(); creationTime = in.readLong(); lastUpdateTime = in.readLong(); lastEvictionTime = in.readLong(); lockedEntryCount = in.readLong(); lockWaitCount = in.readLong(); dirtyEntryCount = in.readLong(); } @Override LocalMapOperationStats newOperationStatsInstance() { return new LocalMapOperationStatsImpl(); } public long getOwnedEntryCount() { return ownedEntryCount; } public void setOwnedEntryCount(long ownedEntryCount) { this.ownedEntryCount = ownedEntryCount; } public long getBackupEntryCount() { return backupEntryCount; } public void setBackupEntryCount(long backupEntryCount) { this.backupEntryCount = backupEntryCount; } public long getMarkedAsRemovedEntryCount() { return markedAsRemovedEntryCount; } public void setMarkedAsRemovedEntryCount(long markedAsRemovedEntryCount) { this.markedAsRemovedEntryCount = markedAsRemovedEntryCount; } public long getOwnedEntryMemoryCost() { return ownedEntryMemoryCost; } public void setOwnedEntryMemoryCost(long ownedEntryMemoryCost) { this.ownedEntryMemoryCost = ownedEntryMemoryCost; } public long getBackupEntryMemoryCost() { return backupEntryMemoryCost; } public void setBackupEntryMemoryCost(long backupEntryMemoryCost) { this.backupEntryMemoryCost = backupEntryMemoryCost; } public long getMarkedAsRemovedMemoryCost() { return markedAsRemovedMemoryCost; } public void setMarkedAsRemovedMemoryCost(long markedAsRemovedMemoryCost) { this.markedAsRemovedMemoryCost = markedAsRemovedMemoryCost; } public long getCreationTime() { return creationTime; } public void setCreationTime(long creationTime) { this.creationTime = creationTime; } public long getLastAccessTime() { return lastAccessTime.get(); } public void setLastAccessTime(long lastAccessTime) { this.lastAccessTime.set(Math.max(this.lastAccessTime.get(), lastAccessTime)); } public long getLastUpdateTime() { return lastUpdateTime; } public void setLastUpdateTime(long lastUpdateTime) { this.lastUpdateTime = Math.max(this.lastUpdateTime, lastUpdateTime); } public long getLastEvictionTime() { return lastEvictionTime; } public void setLastEvictionTime(long lastEvictionTime) { this.lastEvictionTime = lastEvictionTime; } public long getHits() { return hits.get(); } public void setHits(long hits) { this.hits.set(hits); } public long getLockedEntryCount() { return lockedEntryCount; } public void setLockedEntryCount(long lockedEntryCount) { this.lockedEntryCount = lockedEntryCount; } public long getLockWaitCount() { return lockWaitCount; } public void setLockWaitCount(long lockWaitCount) { this.lockWaitCount = lockWaitCount; } public long getDirtyEntryCount() { return dirtyEntryCount; } public void setDirtyEntryCount(long l) { this.dirtyEntryCount = l; } @Override public String toString() { return "LocalMapStatsImpl{" + "ownedEntryCount=" + ownedEntryCount + ", backupEntryCount=" + backupEntryCount + ", markedAsRemovedEntryCount=" + markedAsRemovedEntryCount + ", ownedEntryMemoryCost=" + ownedEntryMemoryCost + ", backupEntryMemoryCost=" + backupEntryMemoryCost + ", markedAsRemovedMemoryCost=" + markedAsRemovedMemoryCost + ", creationTime=" + creationTime + ", lastAccessTime=" + lastAccessTime.get() + ", lastUpdateTime=" + lastUpdateTime + ", lastEvictionTime=" + lastEvictionTime + ", hits=" + hits.get() + ", lockedEntryCount=" + lockedEntryCount + ", lockWaitCount=" + lockWaitCount + ", dirtyEntryCount=" + dirtyEntryCount + ", " + operationStats + '}'; } }