// Path: jms-server/src/main/java/me/chanjar/jms/server/command/infras/Command.java
// public abstract class Command implements Serializable {
// 
//   private static final long serialVersionUID = -2463630580877588711L;
//   protected final String id;
// 
//   protected final String requestId;
// 
//   /**
//    * Command来源的requestId
//    *
//    * @param requestId
//    */
//   public Command(String requestId) {
//     this.id = StrongUuidGenerator.getNextId();
//     this.requestId = requestId;
//   }
// 
//   /**
//    * 全局唯一Id, uuid
//    *
//    * @return
//    */
//   public String getId() {
//     return id;
//   }
// 
//   /**
//    * 对应的{@link RequestDto#id}
//    *
//    * @return
//    */
//   public String getRequestId() {
//     return requestId;
//   }
// }
// 
// Path: jms-server/src/main/java/me/chanjar/jms/server/command/infras/CommandBuffer.java
// public interface CommandBuffer<T extends Command> {
// 
//   /**
//    * Buffer是否已经满了
//    *
//    * @return
//    */
//   boolean hasRemaining();
// 
//   /**
//    * 放入Command
//    *
//    * @param command
//    */
//   void put(T command);
// 
//   /**
//    * 清空缓存
//    */
//   void clear();
// 
//   /**
//    * 获得{@link Command}
//    *
//    * @return
//    */
//   List<T> get();
// 
// }
// 
// Path: jms-server/src/main/java/me/chanjar/jms/server/command/infras/CommandExecutor.java
// public interface CommandExecutor<T extends CommandBuffer> {
// 
//   void execute(T commandBuffer);
// 
// }


import com.lmax.disruptor.EventHandler;
import me.chanjar.jms.server.command.infras.Command;
import me.chanjar.jms.server.command.infras.CommandBuffer;
import me.chanjar.jms.server.command.infras.CommandExecutor;
package me.chanjar.jms.server.command.infras.disruptor;


public class CommandEventDbHandler<T extends Command> implements EventHandler<CommandEvent<T>> {

  private final CommandBuffer<T> commandBuffer;

  private final CommandExecutor commandExecutor;

  public CommandEventDbHandler(CommandBuffer<T> commandBuffer, CommandExecutor commandExecutor) {
    this.commandBuffer = commandBuffer;
// Path: jms-server/src/main/java/me/chanjar/jms/server/command/infras/Command.java
// public abstract class Command implements Serializable {
// 
//   private static final long serialVersionUID = -2463630580877588711L;
//   protected final String id;
// 
//   protected final String requestId;
// 
//   /**
//    * Command来源的requestId
//    *
//    * @param requestId
//    */
//   public Command(String requestId) {
//     this.id = StrongUuidGenerator.getNextId();
//     this.requestId = requestId;
//   }
// 
//   /**
//    * 全局唯一Id, uuid
//    *
//    * @return
//    */
//   public String getId() {
//     return id;
//   }
// 
//   /**
//    * 对应的{@link RequestDto#id}
//    *
//    * @return
//    */
//   public String getRequestId() {
//     return requestId;
//   }
// }
// 
// Path: jms-server/src/main/java/me/chanjar/jms/server/command/infras/CommandBuffer.java
// public interface CommandBuffer<T extends Command> {
// 
//   /**
//    * Buffer是否已经满了
//    *
//    * @return
//    */
//   boolean hasRemaining();
// 
//   /**
//    * 放入Command
//    *
//    * @param command
//    */
//   void put(T command);
// 
//   /**
//    * 清空缓存
//    */
//   void clear();
// 
//   /**
//    * 获得{@link Command}
//    *
//    * @return
//    */
//   List<T> get();
// 
// }
// 
// Path: jms-server/src/main/java/me/chanjar/jms/server/command/infras/CommandExecutor.java
// public interface CommandExecutor<T extends CommandBuffer> {
// 
//   void execute(T commandBuffer);
// 
// }


// Path: jms-server/src/main/java/me/chanjar/jms/server/command/infras/disruptor/CommandEventDbHandler.java
import com.lmax.disruptor.EventHandler;
import me.chanjar.jms.server.command.infras.Command;
import me.chanjar.jms.server.command.infras.CommandBuffer;
import me.chanjar.jms.server.command.infras.CommandExecutor;

package me.chanjar.jms.server.command.infras.disruptor;


public class CommandEventDbHandler<T extends Command> implements EventHandler<CommandEvent<T>> {

  private final CommandBuffer<T> commandBuffer;

  private final CommandExecutor commandExecutor;

  public CommandEventDbHandler(CommandBuffer<T> commandBuffer, CommandExecutor commandExecutor) {
    this.commandBuffer = commandBuffer;
    this.commandExecutor = commandExecutor;