001package org.cache2k.impl.timer;
002
003/*
004 * #%L
005 * cache2k core package
006 * %%
007 * Copyright (C) 2000 - 2015 headissue GmbH, Munich
008 * %%
009 * This program is free software: you can redistribute it and/or modify
010 * it under the terms of the GNU General Public License as
011 * published by the Free Software Foundation, either version 3 of the 
012 * License, or (at your option) any later version.
013 * 
014 * This program is distributed in the hope that it will be useful,
015 * but WITHOUT ANY WARRANTY; without even the implied warranty of
016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017 * GNU General Public License for more details.
018 * 
019 * You should have received a copy of the GNU General Public 
020 * License along with this program.  If not, see
021 * <http://www.gnu.org/licenses/gpl-3.0.html>.
022 * #L%
023 */
024
025/**
026 * Generic interface of a timer service.
027 *
028 * @author Jens Wilke; created: 2014-03-23
029 */
030public abstract class TimerService {
031
032  /**
033   * Add a timer that fires at the specified time.
034   */
035  public abstract <T> CancelHandle add(TimerListener _listener, long _fireTime);
036
037  public abstract <T> CancelHandle add(TimerPayloadListener<T> _listener, T _payload, long _fireTime);
038
039  /**
040   * Return the tasks in the timer queue including the cancelled.
041   */
042  public abstract int getQueueSize();
043  public abstract long getEventsDelivered();
044  public abstract long getEventsScheduled();
045  public abstract long getPurgeCount();
046  public abstract long getCancelCount();
047  public abstract long getFireExceptionCount();
048
049  public interface CancelHandle {
050
051    /**
052     * Cancel the timer execution. This is a fast and unsynchronized method.
053     */
054    public void cancel();
055
056    public boolean isCancelled();
057
058  }
059
060}