Package com.sissi.pipeline.in.iq

Source Code of com.sissi.pipeline.in.iq.IQResponseProcessor

package com.sissi.pipeline.in.iq;

import com.sissi.context.JIDContext;
import com.sissi.pipeline.Input;
import com.sissi.protocol.Protocol;
import com.sissi.protocol.ProtocolType;

/**
* @author kim 2013年12月3日
*/
abstract public class IQResponseProcessor implements Input {

  private final ProtocolType type;

  private final boolean next;

  private final boolean clear;

  public IQResponseProcessor(String type) {
    this(type, true);
  }

  public IQResponseProcessor(String type, boolean clear) {
    this(type, true, false);
  }

  /**
   * @param type
   * @param clear Protocol.clear
   * @param next 如果Input返回true是否继续执行Pipeline
   */
  public IQResponseProcessor(String type, boolean clear, boolean next) {
    this.type = ProtocolType.parse(type);
    this.clear = clear;
    this.next = next;
  }

  @Override
  public boolean input(JIDContext context, Protocol protocol) {
    Protocol response = this.prepare(protocol.parent().reply().setType(this.type));
    context.write(this.clear ? response.clear() : response);
    return this.next;
  }

  abstract protected Protocol prepare(Protocol response);
}
TOP

Related Classes of com.sissi.pipeline.in.iq.IQResponseProcessor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.