public class StatementMetricArray extends Object
Changes to StatementMetric instances must be done in a read-lock:
getRwLock.readLock.lock() metric = getAddMetric(index) metric.accountFor(cpu, wall, etc) getRwLock.readLock.unlock()
All other changes are done under write lock for this class.
This is a collection backed by an array that grows by 50% each time expanded, maintains a free/busy list of statement names, maintains an element number of last used element.
The flush operaton copies the complete array, thereby keeping array size. Statement names are only removed on the next flush.
Constructor and Description |
---|
StatementMetricArray(String runtimeURI,
String name,
int initialSize,
boolean isReportInactive)
Ctor.
|
Modifier and Type | Method and Description |
---|---|
int |
addStatementGetIndex(DeploymentIdNamePair statement)
Adds a statement and returns the index added at.
|
StatementMetric[] |
flushMetrics()
Flushes the existing metrics via array copy and swap.
|
StatementMetric |
getAddMetric(int index)
Returns an existing or creates a new statement metric for the index.
|
ManagedReadWriteLock |
getRwLock()
Returns the read-write lock, for read-lock when modifications are made.
|
void |
removeStatement(DeploymentIdNamePair statement)
Remove a statement.
|
int |
sizeLastElement()
Returns maximum collection size (last used element), which may not truely reflect the number
of actual statements held as some slots may empty up when statements are removed.
|
public StatementMetricArray(String runtimeURI, String name, int initialSize, boolean isReportInactive)
runtimeURI
- runtime URIname
- name of statement groupinitialSize
- initial size of arrayisReportInactive
- true to indicate to report on inactive statementspublic void removeStatement(DeploymentIdNamePair statement)
Next flush actually frees the slot that this statement occupied.
statement
- to removepublic int addStatementGetIndex(DeploymentIdNamePair statement)
May reuse an empty slot, grow the underlying array, or append to the end.
statement
- deployment-id and name pairpublic StatementMetric[] flushMetrics()
May report all statements (empty and non-empty slots) and thereby null values.
Returns null to indicate no reports to do.
public ManagedReadWriteLock getRwLock()
public StatementMetric getAddMetric(int index)
index
- of statementpublic int sizeLastElement()
Copyright © 2005–2018. All rights reserved.