package com.hubspot.blazar.guice;
import java.util.concurrent.ScheduledExecutorService;
import org.apache.curator.framework.recipes.leader.LeaderLatchListener;
import com.google.inject.Binder;
import com.google.inject.Module;
import com.google.inject.Scopes;
import com.google.inject.multibindings.Multibinder;
import com.google.inject.name.Names;
import com.hubspot.blazar.queue.QueueProcessor;
import com.hubspot.blazar.util.ManagedScheduledExecutorServiceProvider;
public class BlazarQueueProcessorModule implements Module {
@Override
public void configure(Binder binder) {
Multibinder.newSetBinder(binder, LeaderLatchListener.class).addBinding().to(QueueProcessor.class);
binder.bind(ScheduledExecutorService.class)
.annotatedWith(Names.named("QueueProcessor"))
.toProvider(new ManagedScheduledExecutorServiceProvider(1, "QueueProcessor"))
.in(Scopes.SINGLETON);
}
}