package de.tum.in.www1.jReto.routing.managed_module;
import java.util.concurrent.Executor;
import de.tum.in.www1.jReto.module.api.Advertiser;
import de.tum.in.www1.jReto.module.api.Browser;
import de.tum.in.www1.jReto.module.api.Module;
import de.tum.in.www1.jReto.util.Timer;
/**
* A ManagedModule wraps a Modules browser and advertiser in their Managed classes, which automatically restart them if starting fails.
* */
public class ManagedModule implements Module {
public final static Timer.BackoffTimerSettings DEFAULT_TIMER_SETTINGS = new Timer.BackoffTimerSettings(5, 1.5, 60);
private final Module module;
private final ManagedAdvertiser advertiser;
private final ManagedBrowser browser;
public ManagedModule(Module module, Executor executor) {
this.module = module;
this.module.setExecutor(executor);
this.advertiser = new ManagedAdvertiser(module.getAdvertiser(), executor);
this.browser = new ManagedBrowser(module.getBrowser(), executor);
}
public Module getModule() {
return this.module;
}
@Override
public Advertiser getAdvertiser() {
return this.advertiser;
}
@Override
public Browser getBrowser() {
return this.browser;
}
@Override
public void setExecutor(Executor executor) {
this.module.setExecutor(executor);
}
}