All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zeromq.timer.ZTicker Maven / Gradle / Ivy

The newest version!
package org.zeromq.timer;

import org.zeromq.timer.ZTicket.Ticket;
import org.zeromq.timer.ZTimer.Timer;

import zmq.util.Draft;
import zmq.util.function.Supplier;

/**
 * Manages set of tickets and timers.
 * 

* Tickets can be added with a given delay in milliseconds, * when the delay expires after addition, * handler method is executed with given arguments. *
* Ticket is NOT repetitive and will be executed once unless canceled. *

* Timers can be added with a given interval in milliseconds, * when the interval of time expires after addition, * handler method is executed with given arguments. *
* Timer is repetitive and will be executed over time until canceled. *

* This is a DRAFT class, and may change without notice. */ @Draft public final class ZTicker { private final ZTimer timer; private final ZTicket ticket; public ZTicker() { timer = new ZTimer(); ticket = new ZTicket(); } ZTicker(Supplier clock) { timer = new ZTimer(clock); ticket = new ZTicket(clock); } public Ticket addTicket(long interval, TimerHandler handler, Object... args) { return ticket.add(interval, handler, args); } public Timer addTimer(long interval, TimerHandler handler, Object... args) { return timer.add(interval, handler, args); } public long timeout() { long timer = this.timer.timeout(); long ticket = this.ticket.timeout(); if (timer < 0 || ticket < 0) { return Math.max(timer, ticket); } else { return Math.min(timer, ticket); } } public int execute() { return timer.execute() + ticket.execute(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy