// Path: electrons/src/main/java/com/ziyuan/ElectronsHolder.java
// public final class ElectronsHolder {
// 
//     /**
//      * 电子
//      */
//     private Electron electron;
// 
//     /**
//      * 要执行的监听器，这里已经排好序了
//      */
//     private List<ElectronsListener> listeners;
// 
//     public Electron getElectron() {
//         return electron;
//     }
// 
//     public void setElectron(Electron electron) {
//         this.electron = electron;
//     }
// 
//     public List<ElectronsListener> getListeners() {
//         return listeners;
//     }
// 
//     public void setListeners(List<ElectronsListener> listeners) {
//         this.listeners = listeners;
//     }
// 
//     /**
//      * 处理
//      *
//      * @throws Exception 处理过程中的异常，同样抛出去
//      */
//     public boolean handle() throws Exception {
//         if (CollectionUtils.isEmpty(listeners)) {
//             return false;
//         }
//         for (ElectronsListener listener : listeners) {
//             listener.onEvent(electron);
//         }
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return electron.getSource().getClass().getSimpleName() + " - ";
//     }
// }
// 
// Path: electrons/src/main/java/com/ziyuan/exceptions/OpNotSupportException.java
// public class OpNotSupportException extends Exception {
// 
//     public OpNotSupportException() {
//         super("Operation not support !");
//     }
// }


import com.lmax.disruptor.dsl.Disruptor;
import com.ziyuan.ElectronsHolder;
import com.ziyuan.exceptions.OpNotSupportException;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.concurrent.EventCountCircuitBreaker;
package com.ziyuan.channel;


/**
 * SpecChannel 特殊管道，用于处理after逻辑
 *
 * @author ziyuan
 * @since 2017-03-10
 */
public class SpecChannel extends AbstractChannel {

    public SpecChannel(Disruptor<ElectronsHolder> disruptor) {
        super(disruptor);
    }

    @Setter
    @Getter
    private EventCountCircuitBreaker breaker;

    @Override
    public boolean handle(ElectronsHolder electronsHolder) throws OpNotSupportException {
// Path: electrons/src/main/java/com/ziyuan/ElectronsHolder.java
// public final class ElectronsHolder {
// 
//     /**
//      * 电子
//      */
//     private Electron electron;
// 
//     /**
//      * 要执行的监听器，这里已经排好序了
//      */
//     private List<ElectronsListener> listeners;
// 
//     public Electron getElectron() {
//         return electron;
//     }
// 
//     public void setElectron(Electron electron) {
//         this.electron = electron;
//     }
// 
//     public List<ElectronsListener> getListeners() {
//         return listeners;
//     }
// 
//     public void setListeners(List<ElectronsListener> listeners) {
//         this.listeners = listeners;
//     }
// 
//     /**
//      * 处理
//      *
//      * @throws Exception 处理过程中的异常，同样抛出去
//      */
//     public boolean handle() throws Exception {
//         if (CollectionUtils.isEmpty(listeners)) {
//             return false;
//         }
//         for (ElectronsListener listener : listeners) {
//             listener.onEvent(electron);
//         }
//         return true;
//     }
// 
//     @Override
//     public String toString() {
//         return electron.getSource().getClass().getSimpleName() + " - ";
//     }
// }
// 
// Path: electrons/src/main/java/com/ziyuan/exceptions/OpNotSupportException.java
// public class OpNotSupportException extends Exception {
// 
//     public OpNotSupportException() {
//         super("Operation not support !");
//     }
// }


// Path: electrons/src/main/java/com/ziyuan/channel/SpecChannel.java
import com.lmax.disruptor.dsl.Disruptor;
import com.ziyuan.ElectronsHolder;
import com.ziyuan.exceptions.OpNotSupportException;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.concurrent.EventCountCircuitBreaker;

package com.ziyuan.channel;


/**
 * SpecChannel 特殊管道，用于处理after逻辑
 *
 * @author ziyuan
 * @since 2017-03-10
 */
public class SpecChannel extends AbstractChannel {

    public SpecChannel(Disruptor<ElectronsHolder> disruptor) {
        super(disruptor);
    }

    @Setter
    @Getter
    private EventCountCircuitBreaker breaker;

    @Override
    public boolean handle(ElectronsHolder electronsHolder) throws OpNotSupportException {
        throw new OpNotSupportException();