
org.wildfly.clustering.server.infinispan.scheduler.Scheduler Maven / Gradle / Ivy
/*
* Copyright The WildFly Authors
* SPDX-License-Identifier: Apache-2.0
*/
package org.wildfly.clustering.server.infinispan.scheduler;
import java.util.function.Supplier;
/**
* Scheduler that does not require predetermined entry meta data.
* @author Paul Ferraro
* @param the scheduled entry identifier type
* @param the scheduled entry metadata type
*/
public interface Scheduler extends org.wildfly.clustering.server.scheduler.Scheduler {
/**
* Schedules an entry for the specified identifier.
* @param id a scheduled entry identifier
*/
void schedule(I id);
/**
* Returns an inactive scheduler instance.
* @param the scheduled object identifier type
* @param the scheduled object metadata type
* @return an inactive scheduler instance.
*/
static Scheduler inactive() {
return new InactiveScheduler<>();
}
/**
* Returns a scheduler that delegates to a scheduler reference.
* @param reference a scheduler reference
* @param the scheduled object identifier type
* @param the scheduled object metadata type
* @return a scheduler that delegates to a scheduler reference.
*/
static Scheduler fromReference(Supplier extends Scheduler> reference) {
return new ReferenceScheduler<>(reference);
}
class InactiveScheduler extends org.wildfly.clustering.server.scheduler.Scheduler.InactiveScheduler implements Scheduler {
@Override
public void schedule(I id) {
}
}
class ReferenceScheduler extends org.wildfly.clustering.server.scheduler.Scheduler.ReferenceScheduler implements Scheduler {
private final Supplier extends Scheduler> reference;
ReferenceScheduler(Supplier extends Scheduler> reference) {
super(reference);
this.reference = reference;
}
@Override
public void schedule(I id) {
this.reference.get().schedule(id);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy