/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.view.worker.trigger; /** * Trigger that applies a limit to the number of successive delta cycles before a full cycle is required. */ public class SuccessiveDeltaLimitTrigger implements ViewCycleTrigger { private final int _maxSuccessiveDeltas; private int _successiveDeltaCount; public SuccessiveDeltaLimitTrigger(int maxSuccessiveDeltas) { _maxSuccessiveDeltas = maxSuccessiveDeltas; } @Override public ViewCycleTriggerResult query(long cycleTimeNanos) { ViewCycleType type = _successiveDeltaCount >= _maxSuccessiveDeltas ? ViewCycleType.FULL : ViewCycleType.DELTA; return new ViewCycleTriggerResult(type); } @Override public void cycleTriggered(long cycleTimeNanos, ViewCycleType cycleType) { switch (cycleType) { case DELTA: _successiveDeltaCount++; break; case FULL: _successiveDeltaCount = 0; break; } } @Override public String toString() { return "SuccessiveDeltaLimitTrigger[maxSuccessiveDeltas=" + _maxSuccessiveDeltas + ", successiveDeltaCount=" + _successiveDeltaCount + "]"; } }