package kr.debop4j.core.guava.eventbus.subscriber;
import com.google.common.eventbus.AllowConcurrentEvents;
import com.google.common.eventbus.AsyncEventBus;
import com.google.common.eventbus.Subscribe;
import kr.debop4j.core.guava.eventbus.events.CashPurchaseEvent;
import kr.debop4j.core.guava.eventbus.events.CreditPurchaseEvent;
import java.util.concurrent.CountDownLatch;
/**
* kr.debop4j.core.guava.eventbus.subscriber.LongProcessSubscriber
*
* @author 배성혁 ( sunghyouk.bae@gmail.com )
* @since 12. 12. 10.
*/
public class LongProcessSubscriber {
private CountDownLatch doneSignal;
public LongProcessSubscriber(AsyncEventBus asyncEventBus, CountDownLatch doneSignal) {
asyncEventBus.register(this);
this.doneSignal = doneSignal;
}
@Subscribe
@AllowConcurrentEvents
public void handleEventConcurrent(CreditPurchaseEvent event) {
pause(300L);
doneSignal.countDown();
}
@Subscribe
public void handleEventConcurrent(CashPurchaseEvent event) {
pause(300L);
doneSignal.countDown();
}
private void pause(long time) {
try {
Thread.sleep(time);
} catch (InterruptedException ignored) {
}
}
}