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* @author Jens Wilke; created: 2014-03-23 027*/ 028public final class PayloadTask<T> extends BaseTimerTask { 029 030 T payload; 031 TimerPayloadListener<T> listener; 032 033 public PayloadTask(long time, T payload, TimerPayloadListener<T> listener) { 034 super(time); 035 this.payload = payload; 036 this.listener = listener; 037 } 038 039 protected boolean fire(long now) { 040 final TimerPayloadListener<T> l = listener; 041 final T pl = payload; 042 if (l != null && pl != null) { 043 l.fire(pl, time); 044 return true; 045 } 046 return false; 047 } 048 049 /** 050 * Cancel the timer execution. 051 */ 052 public void cancel() { 053 listener = null; 054 payload = null; 055 } 056 057 public boolean isCancelled() { 058 return listener == null; 059 } 060 061}