
org.wildfly.clustering.server.infinispan.scheduler.CacheEntryScheduler Maven / Gradle / Ivy
/*
* Copyright The WildFly Authors
* SPDX-License-Identifier: Apache-2.0
*/
package org.wildfly.clustering.server.infinispan.scheduler;
import java.util.Map;
import java.util.function.Supplier;
import org.wildfly.clustering.cache.Key;
/**
* A task scheduler.
* @param the scheduled entry identifier type
* @param the cache entry key type
* @param the cache entry value type
* @param the scheduled entry metadata type
* @author Paul Ferraro
*/
public interface CacheEntryScheduler, V, M> extends Scheduler {
/**
* Schedules a cache entry.
* @param entry a cache entry
*/
void schedule(Map.Entry entry);
/**
* Returns an inactive scheduler instance.
* @param the scheduled object identifier type
* @param the cache entry key type
* @param the cache entry value type
* @param the scheduled object metadata type
* @return an inactive scheduler instance.
*/
static , V, M> CacheEntryScheduler inactive() {
return new InactiveCacheEntryScheduler<>();
}
/**
* Returns a scheduler that delegates to a scheduler reference.
* @param reference a scheduler reference
* @param the scheduled object identifier type
* @param the cache entry key type
* @param the cache entry value type
* @param the scheduled object metadata type
* @return a scheduler that delegates to a scheduler reference.
*/
static , V, M> CacheEntryScheduler fromReference(Supplier extends CacheEntryScheduler> reference) {
return new ReferenceCacheEntryScheduler<>(reference);
}
class InactiveCacheEntryScheduler, V, M> extends Scheduler.InactiveScheduler implements CacheEntryScheduler {
@Override
public void schedule(Map.Entry entry) {
}
}
class ReferenceCacheEntryScheduler, V, M> extends Scheduler.ReferenceScheduler implements CacheEntryScheduler {
private final Supplier extends CacheEntryScheduler> reference;
ReferenceCacheEntryScheduler(Supplier extends CacheEntryScheduler> reference) {
super(reference);
this.reference = reference;
}
@Override
public void schedule(Map.Entry entry) {
this.reference.get().schedule(entry);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy