package com.flexpoker.processmanagers;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import com.flexpoker.framework.command.CommandSender;
import com.flexpoker.framework.processmanager.ProcessManager;
import com.flexpoker.table.command.commands.AutoMoveHandForwardCommand;
import com.flexpoker.table.command.events.AutoMoveHandForwardEvent;
import com.flexpoker.table.command.framework.TableCommandType;
@Component
public class AutoMoveHandForwardProcessManager implements
ProcessManager<AutoMoveHandForwardEvent> {
private final CommandSender<TableCommandType> tableCommandSender;
private final ScheduledThreadPoolExecutor scheduledThreadPoolExecutor;
@Inject
public AutoMoveHandForwardProcessManager(
CommandSender<TableCommandType> tableCommandSender) {
this.tableCommandSender = tableCommandSender;
this.scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(16);
}
@Async
@Override
public void handle(AutoMoveHandForwardEvent event) {
scheduledThreadPoolExecutor.schedule(() -> {
AutoMoveHandForwardCommand command = new AutoMoveHandForwardCommand(
event.getAggregateId(), event.getGameId());
tableCommandSender.send(command);
}, 2, TimeUnit.SECONDS);
}
}