use of java.util.concurrent.locks.Lock in project databus by linkedin.
the class DbusEventsStatisticsCollector method resetAndMerge.
@Override
public void resetAndMerge(List<DbusEventsStatisticsCollector> objList) {
//make a copy ; reset; aggregate; then do atomic copy
DbusEventsTotalStats t = _totalStats.clone(true);
t.reset();
for (DbusEventsStatisticsCollector o : objList) {
t.mergeStats(o.getTotalStats());
}
//update this object's state atomically
Lock writeLock = acquireWriteLock();
try {
//atomic clone of t into totalStats;
_totalStats.cloneData(t);
resetInternalStats();
for (DbusEventsStatisticsCollector o : objList) {
mergeInternalStats(o);
}
} finally {
releaseLock(writeLock);
}
}
use of java.util.concurrent.locks.Lock in project databus by linkedin.
the class DbusEventsStatisticsCollector method getOrAddPerPeerCollector.
private DbusEventsTotalStats getOrAddPerPeerCollector(String peer, Lock writeLock) {
Lock myWriteLock = null;
if (null == writeLock)
myWriteLock = acquireWriteLock();
try {
DbusEventsTotalStats peerStats = _perPeerStats.get(peer);
if (null == peerStats) {
peerStats = new AggregatedDbusEventsTotalStats(_id, _perPeerNamePrefix + peer, true, isThreadSafe(), null);
_perPeerStats.put(peer, peerStats);
if (null != _mbeanServer) {
peerStats.registerAsMbean(_mbeanServer);
}
}
return peerStats;
} finally {
releaseLock(myWriteLock);
}
}
use of java.util.concurrent.locks.Lock in project databus by linkedin.
the class DbusEventsTotalStats method getSizeDataEventsPayload.
@Override
public long getSizeDataEventsPayload() {
Lock readLock = acquireReadLock();
long result = 0;
try {
long num = _event.numDataEvents;
result = (0 == num) ? 0 : _event.sizeDataEventsPayload / num;
} finally {
releaseLock(readLock);
}
return result;
}
use of java.util.concurrent.locks.Lock in project databus by linkedin.
the class DbusEventsTotalStats method getNumDataEventsFiltered.
@Override
public long getNumDataEventsFiltered() {
Lock readLock = acquireReadLock();
long result = 0;
try {
result = _event.numDataEventsFiltered;
} finally {
releaseLock(readLock);
}
return result;
}
use of java.util.concurrent.locks.Lock in project databus by linkedin.
the class DbusEventsTotalStats method getNumDataEvents.
@Override
public long getNumDataEvents() {
Lock readLock = acquireReadLock();
long result = 0;
try {
result = _event.numDataEvents;
} finally {
releaseLock(readLock);
}
return result;
}
Aggregations