blob: 1830a183bee7926b146afa7c5deed7e619858f02 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.processor.resequencer;
import java.util.Timer;
import java.util.TimerTask;
/**
* A timer task that notifies handlers about scheduled timeouts.
*
* @see Timer
* @see TimerTask
*
* @version
*/
public class Timeout extends TimerTask {
private TimeoutHandler timeoutHandler;
private Timer timer;
private long timeout;
/**
* Creates a new timeout task using the given {@link Timer} instance and
* timeout value. The task is not scheduled immediately. It will be
* scheduled by calling this task's {@link #schedule()} method.
*
* @param timer a timer
* @param timeout a timeout value.
*/
public Timeout(Timer timer, long timeout) {
this.timeout = timeout;
this.timer = timer;
}
/**
* Returns the timeout handler that has been registered for notification.
*
* @return the timeout handler.
*/
public TimeoutHandler getTimeoutHandlers() {
return timeoutHandler;
}
/**
* Sets a timeout handler for receiving timeout notifications.
*
* @param timeoutHandler
* a timeout handler.
*/
public void setTimeoutHandler(TimeoutHandler timeoutHandler) {
this.timeoutHandler = timeoutHandler;
}
/**
* Schedules this timeout task.
*/
public void schedule() {
timer.schedule(this, timeout);
}
/**
* Notifies the timeout handler about the scheduled timeout.
*/
@Override
public void run() {
timeoutHandler.timeout(this);
}
}