...
/**
* Actions queue stats producer.
*/
public class ActionsQueueStatsProducer implements IStatsProducer {
/**
* Stats list.
*/
private List<IStats> statsList;
/**
* Actions queue stats instance.
*/
private ActionsQueueStats stats;
/**
* Constructor. Producer will be registered himself in IProducerRegistry.
*
* @param name stats name.
* @param selectedIntervals supported intervals.
*/
public ActionsQueueStatsProducer(final String name, final Interval[] selectedIntervals) {
stats = new ActionsQueueStats(name, selectedIntervals);
statsList = new ArrayList<IStats>();
statsList.add(stats);
IProducerRegistry registry = ProducerRegistryFactory.getProducerRegistryInstance();
registry.registerProducer(this);
}
@Override
public final String getCategory() {
return "actionsQueue";
}
@Override
public final String getProducerId() {
return "CMProfileActionsQueue";
}
@Override
public final List<IStats> getStats() {
return statsList;
}
@Override
public final String getSubsystem() {
return "CheetahMailProfileSys";
}
/**
* Add requested (planned to be enqueued) action to stats.
*
* @param action requested action.
* @param currentQueueElements current queue elements count.
*/
public final void addRequestedAction(final CMProfileAction action, final long currentQueueElements) {
stats.addRequestedAction(action, currentQueueElements);
}
/**
* Add enqueued action to stats.
*/
public final void addEnqueuedAction() {
stats.addEnqueuedAction();
}
/**
* Add processed actions batch to stats.
*
* @param actions processed actions.
* @param processingTime processing time in mills.
*/
public final void addProcessedActions(final List<CMProfileAction> actions, final long processingTime) {
stats.addProcessedBatch(actions, processingTime);
}
/**
* Add queue overflow (unrecoverable overflow) to stats.
*/
public final void addQueueOverflow() {
stats.addQueueOverflow();
}
/**
* Add processing error to stats.
*/
public final void addProcessingError() {
stats.addProcessingError();
}
}
|