package com.yiqiniu.easytrans.context.event; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.yiqiniu.easytrans.context.LogProcessContext; import com.yiqiniu.easytrans.protocol.IdempotentTypeDeclare.TransactionId; public class GuardianProcessEndEventManager { private LogProcessContext logCtx; private Logger LOG = LoggerFactory.getLogger(this.getClass()); private List<GuardianProcessEndEventHandler> listeners = new ArrayList<GuardianProcessEndEventHandler>(); public GuardianProcessEndEventManager(LogProcessContext logCtx) { super(); this.logCtx = logCtx; } public void registerSemiLogEventListener(GuardianProcessEndEventHandler handler){ listeners.add(handler); } public boolean publish(){ TransactionId transactionId = logCtx.getTransactionId(); for(GuardianProcessEndEventHandler handler:listeners){ if(!handler.beforeProcessEnd(logCtx)){ LOG.info("GuardianProcessEndEvent handler return false,appId:{},busCode,trxId:{}",transactionId.getAppId(),transactionId.getBusCode(),transactionId.getTrxId()); return false; } } return true; } }