/**
 * Autogenerated by Thrift Compiler (0.9.3)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package org.apache.distributedlog.thrift;

import java.util.ArrayList;
import java.util.BitSet;
import java.util.Collections;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import org.apache.thrift.EncodingUtils;
import org.apache.thrift.protocol.TTupleProtocol;
import org.apache.thrift.scheme.IScheme;
import org.apache.thrift.scheme.SchemeFactory;
import org.apache.thrift.scheme.StandardScheme;
import org.apache.thrift.scheme.TupleScheme;

@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2017-05-27")
public class BKDLConfigFormat implements org.apache.thrift.TBase<BKDLConfigFormat, BKDLConfigFormat._Fields>, java.io.Serializable, Cloneable, Comparable<BKDLConfigFormat> {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("BKDLConfigFormat");

  private static final org.apache.thrift.protocol.TField BK_ZK_SERVERS_FIELD_DESC = new org.apache.thrift.protocol.TField("bkZkServers", org.apache.thrift.protocol.TType.STRING, (short)1);
  private static final org.apache.thrift.protocol.TField BK_LEDGERS_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("bkLedgersPath", org.apache.thrift.protocol.TType.STRING, (short)2);
  private static final org.apache.thrift.protocol.TField SANITY_CHECK_TXN_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("sanityCheckTxnID", org.apache.thrift.protocol.TType.BOOL, (short)3);
  private static final org.apache.thrift.protocol.TField ENCODE_REGION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("encodeRegionID", org.apache.thrift.protocol.TType.BOOL, (short)4);
  private static final org.apache.thrift.protocol.TField BK_ZK_SERVERS_FOR_READER_FIELD_DESC = new org.apache.thrift.protocol.TField("bkZkServersForReader", org.apache.thrift.protocol.TType.STRING, (short)5);
  private static final org.apache.thrift.protocol.TField DL_ZK_SERVERS_FOR_WRITER_FIELD_DESC = new org.apache.thrift.protocol.TField("dlZkServersForWriter", org.apache.thrift.protocol.TType.STRING, (short)6);
  private static final org.apache.thrift.protocol.TField DL_ZK_SERVERS_FOR_READER_FIELD_DESC = new org.apache.thrift.protocol.TField("dlZkServersForReader", org.apache.thrift.protocol.TType.STRING, (short)7);
  private static final org.apache.thrift.protocol.TField ACL_ROOT_PATH_FIELD_DESC = new org.apache.thrift.protocol.TField("aclRootPath", org.apache.thrift.protocol.TType.STRING, (short)8);
  private static final org.apache.thrift.protocol.TField FIRST_LOG_SEGMENT_SEQ_NO_FIELD_DESC = new org.apache.thrift.protocol.TField("firstLogSegmentSeqNo", org.apache.thrift.protocol.TType.I64, (short)9);
  private static final org.apache.thrift.protocol.TField FEDERATED_NAMESPACE_FIELD_DESC = new org.apache.thrift.protocol.TField("federatedNamespace", org.apache.thrift.protocol.TType.BOOL, (short)10);

  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
  static {
    schemes.put(StandardScheme.class, new BKDLConfigFormatStandardSchemeFactory());
    schemes.put(TupleScheme.class, new BKDLConfigFormatTupleSchemeFactory());
  }

  public String bkZkServers; // optional
  public String bkLedgersPath; // optional
  public boolean sanityCheckTxnID; // optional
  public boolean encodeRegionID; // optional
  public String bkZkServersForReader; // optional
  public String dlZkServersForWriter; // optional
  public String dlZkServersForReader; // optional
  public String aclRootPath; // optional
  public long firstLogSegmentSeqNo; // optional
  public boolean federatedNamespace; // optional

  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
    BK_ZK_SERVERS((short)1, "bkZkServers"),
    BK_LEDGERS_PATH((short)2, "bkLedgersPath"),
    SANITY_CHECK_TXN_ID((short)3, "sanityCheckTxnID"),
    ENCODE_REGION_ID((short)4, "encodeRegionID"),
    BK_ZK_SERVERS_FOR_READER((short)5, "bkZkServersForReader"),
    DL_ZK_SERVERS_FOR_WRITER((short)6, "dlZkServersForWriter"),
    DL_ZK_SERVERS_FOR_READER((short)7, "dlZkServersForReader"),
    ACL_ROOT_PATH((short)8, "aclRootPath"),
    FIRST_LOG_SEGMENT_SEQ_NO((short)9, "firstLogSegmentSeqNo"),
    FEDERATED_NAMESPACE((short)10, "federatedNamespace");

    private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();

    static {
      for (_Fields field : EnumSet.allOf(_Fields.class)) {
        byName.put(field.getFieldName(), field);
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, or null if its not found.
     */
    public static _Fields findByThriftId(int fieldId) {
      switch(fieldId) {
        case 1: // BK_ZK_SERVERS
          return BK_ZK_SERVERS;
        case 2: // BK_LEDGERS_PATH
          return BK_LEDGERS_PATH;
        case 3: // SANITY_CHECK_TXN_ID
          return SANITY_CHECK_TXN_ID;
        case 4: // ENCODE_REGION_ID
          return ENCODE_REGION_ID;
        case 5: // BK_ZK_SERVERS_FOR_READER
          return BK_ZK_SERVERS_FOR_READER;
        case 6: // DL_ZK_SERVERS_FOR_WRITER
          return DL_ZK_SERVERS_FOR_WRITER;
        case 7: // DL_ZK_SERVERS_FOR_READER
          return DL_ZK_SERVERS_FOR_READER;
        case 8: // ACL_ROOT_PATH
          return ACL_ROOT_PATH;
        case 9: // FIRST_LOG_SEGMENT_SEQ_NO
          return FIRST_LOG_SEGMENT_SEQ_NO;
        case 10: // FEDERATED_NAMESPACE
          return FEDERATED_NAMESPACE;
        default:
          return null;
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, throwing an exception
     * if it is not found.
     */
    public static _Fields findByThriftIdOrThrow(int fieldId) {
      _Fields fields = findByThriftId(fieldId);
      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
      return fields;
    }

    /**
     * Find the _Fields constant that matches name, or null if its not found.
     */
    public static _Fields findByName(String name) {
      return byName.get(name);
    }

    private final short _thriftId;
    private final String _fieldName;

    _Fields(short thriftId, String fieldName) {
      _thriftId = thriftId;
      _fieldName = fieldName;
    }

    public short getThriftFieldId() {
      return _thriftId;
    }

    public String getFieldName() {
      return _fieldName;
    }
  }

  // isset id assignments
  private static final int __SANITYCHECKTXNID_ISSET_ID = 0;
  private static final int __ENCODEREGIONID_ISSET_ID = 1;
  private static final int __FIRSTLOGSEGMENTSEQNO_ISSET_ID = 2;
  private static final int __FEDERATEDNAMESPACE_ISSET_ID = 3;
  private byte __isset_bitfield = 0;
  private static final _Fields optionals[] = {_Fields.BK_ZK_SERVERS,_Fields.BK_LEDGERS_PATH,_Fields.SANITY_CHECK_TXN_ID,_Fields.ENCODE_REGION_ID,_Fields.BK_ZK_SERVERS_FOR_READER,_Fields.DL_ZK_SERVERS_FOR_WRITER,_Fields.DL_ZK_SERVERS_FOR_READER,_Fields.ACL_ROOT_PATH,_Fields.FIRST_LOG_SEGMENT_SEQ_NO,_Fields.FEDERATED_NAMESPACE};
  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
  static {
    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
    tmpMap.put(_Fields.BK_ZK_SERVERS, new org.apache.thrift.meta_data.FieldMetaData("bkZkServers", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.BK_LEDGERS_PATH, new org.apache.thrift.meta_data.FieldMetaData("bkLedgersPath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.SANITY_CHECK_TXN_ID, new org.apache.thrift.meta_data.FieldMetaData("sanityCheckTxnID", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.ENCODE_REGION_ID, new org.apache.thrift.meta_data.FieldMetaData("encodeRegionID", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.BK_ZK_SERVERS_FOR_READER, new org.apache.thrift.meta_data.FieldMetaData("bkZkServersForReader", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.DL_ZK_SERVERS_FOR_WRITER, new org.apache.thrift.meta_data.FieldMetaData("dlZkServersForWriter", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.DL_ZK_SERVERS_FOR_READER, new org.apache.thrift.meta_data.FieldMetaData("dlZkServersForReader", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.ACL_ROOT_PATH, new org.apache.thrift.meta_data.FieldMetaData("aclRootPath", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.FIRST_LOG_SEGMENT_SEQ_NO, new org.apache.thrift.meta_data.FieldMetaData("firstLogSegmentSeqNo", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.FEDERATED_NAMESPACE, new org.apache.thrift.meta_data.FieldMetaData("federatedNamespace", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    metaDataMap = Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(BKDLConfigFormat.class, metaDataMap);
  }

  public BKDLConfigFormat() {
  }

  /**
   * Performs a deep copy on <i>other</i>.
   */
  public BKDLConfigFormat(BKDLConfigFormat other) {
    __isset_bitfield = other.__isset_bitfield;
    if (other.isSetBkZkServers()) {
      this.bkZkServers = other.bkZkServers;
    }
    if (other.isSetBkLedgersPath()) {
      this.bkLedgersPath = other.bkLedgersPath;
    }
    this.sanityCheckTxnID = other.sanityCheckTxnID;
    this.encodeRegionID = other.encodeRegionID;
    if (other.isSetBkZkServersForReader()) {
      this.bkZkServersForReader = other.bkZkServersForReader;
    }
    if (other.isSetDlZkServersForWriter()) {
      this.dlZkServersForWriter = other.dlZkServersForWriter;
    }
    if (other.isSetDlZkServersForReader()) {
      this.dlZkServersForReader = other.dlZkServersForReader;
    }
    if (other.isSetAclRootPath()) {
      this.aclRootPath = other.aclRootPath;
    }
    this.firstLogSegmentSeqNo = other.firstLogSegmentSeqNo;
    this.federatedNamespace = other.federatedNamespace;
  }

  public BKDLConfigFormat deepCopy() {
    return new BKDLConfigFormat(this);
  }

  @Override
  public void clear() {
    this.bkZkServers = null;
    this.bkLedgersPath = null;
    setSanityCheckTxnIDIsSet(false);
    this.sanityCheckTxnID = false;
    setEncodeRegionIDIsSet(false);
    this.encodeRegionID = false;
    this.bkZkServersForReader = null;
    this.dlZkServersForWriter = null;
    this.dlZkServersForReader = null;
    this.aclRootPath = null;
    setFirstLogSegmentSeqNoIsSet(false);
    this.firstLogSegmentSeqNo = 0;
    setFederatedNamespaceIsSet(false);
    this.federatedNamespace = false;
  }

  public String getBkZkServers() {
    return this.bkZkServers;
  }

  public BKDLConfigFormat setBkZkServers(String bkZkServers) {
    this.bkZkServers = bkZkServers;
    return this;
  }

  public void unsetBkZkServers() {
    this.bkZkServers = null;
  }

  /** Returns true if field bkZkServers is set (has been assigned a value) and false otherwise */
  public boolean isSetBkZkServers() {
    return this.bkZkServers != null;
  }

  public void setBkZkServersIsSet(boolean value) {
    if (!value) {
      this.bkZkServers = null;
    }
  }

  public String getBkLedgersPath() {
    return this.bkLedgersPath;
  }

  public BKDLConfigFormat setBkLedgersPath(String bkLedgersPath) {
    this.bkLedgersPath = bkLedgersPath;
    return this;
  }

  public void unsetBkLedgersPath() {
    this.bkLedgersPath = null;
  }

  /** Returns true if field bkLedgersPath is set (has been assigned a value) and false otherwise */
  public boolean isSetBkLedgersPath() {
    return this.bkLedgersPath != null;
  }

  public void setBkLedgersPathIsSet(boolean value) {
    if (!value) {
      this.bkLedgersPath = null;
    }
  }

  public boolean isSanityCheckTxnID() {
    return this.sanityCheckTxnID;
  }

  public BKDLConfigFormat setSanityCheckTxnID(boolean sanityCheckTxnID) {
    this.sanityCheckTxnID = sanityCheckTxnID;
    setSanityCheckTxnIDIsSet(true);
    return this;
  }

  public void unsetSanityCheckTxnID() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SANITYCHECKTXNID_ISSET_ID);
  }

  /** Returns true if field sanityCheckTxnID is set (has been assigned a value) and false otherwise */
  public boolean isSetSanityCheckTxnID() {
    return EncodingUtils.testBit(__isset_bitfield, __SANITYCHECKTXNID_ISSET_ID);
  }

  public void setSanityCheckTxnIDIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SANITYCHECKTXNID_ISSET_ID, value);
  }

  public boolean isEncodeRegionID() {
    return this.encodeRegionID;
  }

  public BKDLConfigFormat setEncodeRegionID(boolean encodeRegionID) {
    this.encodeRegionID = encodeRegionID;
    setEncodeRegionIDIsSet(true);
    return this;
  }

  public void unsetEncodeRegionID() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ENCODEREGIONID_ISSET_ID);
  }

  /** Returns true if field encodeRegionID is set (has been assigned a value) and false otherwise */
  public boolean isSetEncodeRegionID() {
    return EncodingUtils.testBit(__isset_bitfield, __ENCODEREGIONID_ISSET_ID);
  }

  public void setEncodeRegionIDIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ENCODEREGIONID_ISSET_ID, value);
  }

  public String getBkZkServersForReader() {
    return this.bkZkServersForReader;
  }

  public BKDLConfigFormat setBkZkServersForReader(String bkZkServersForReader) {
    this.bkZkServersForReader = bkZkServersForReader;
    return this;
  }

  public void unsetBkZkServersForReader() {
    this.bkZkServersForReader = null;
  }

  /** Returns true if field bkZkServersForReader is set (has been assigned a value) and false otherwise */
  public boolean isSetBkZkServersForReader() {
    return this.bkZkServersForReader != null;
  }

  public void setBkZkServersForReaderIsSet(boolean value) {
    if (!value) {
      this.bkZkServersForReader = null;
    }
  }

  public String getDlZkServersForWriter() {
    return this.dlZkServersForWriter;
  }

  public BKDLConfigFormat setDlZkServersForWriter(String dlZkServersForWriter) {
    this.dlZkServersForWriter = dlZkServersForWriter;
    return this;
  }

  public void unsetDlZkServersForWriter() {
    this.dlZkServersForWriter = null;
  }

  /** Returns true if field dlZkServersForWriter is set (has been assigned a value) and false otherwise */
  public boolean isSetDlZkServersForWriter() {
    return this.dlZkServersForWriter != null;
  }

  public void setDlZkServersForWriterIsSet(boolean value) {
    if (!value) {
      this.dlZkServersForWriter = null;
    }
  }

  public String getDlZkServersForReader() {
    return this.dlZkServersForReader;
  }

  public BKDLConfigFormat setDlZkServersForReader(String dlZkServersForReader) {
    this.dlZkServersForReader = dlZkServersForReader;
    return this;
  }

  public void unsetDlZkServersForReader() {
    this.dlZkServersForReader = null;
  }

  /** Returns true if field dlZkServersForReader is set (has been assigned a value) and false otherwise */
  public boolean isSetDlZkServersForReader() {
    return this.dlZkServersForReader != null;
  }

  public void setDlZkServersForReaderIsSet(boolean value) {
    if (!value) {
      this.dlZkServersForReader = null;
    }
  }

  public String getAclRootPath() {
    return this.aclRootPath;
  }

  public BKDLConfigFormat setAclRootPath(String aclRootPath) {
    this.aclRootPath = aclRootPath;
    return this;
  }

  public void unsetAclRootPath() {
    this.aclRootPath = null;
  }

  /** Returns true if field aclRootPath is set (has been assigned a value) and false otherwise */
  public boolean isSetAclRootPath() {
    return this.aclRootPath != null;
  }

  public void setAclRootPathIsSet(boolean value) {
    if (!value) {
      this.aclRootPath = null;
    }
  }

  public long getFirstLogSegmentSeqNo() {
    return this.firstLogSegmentSeqNo;
  }

  public BKDLConfigFormat setFirstLogSegmentSeqNo(long firstLogSegmentSeqNo) {
    this.firstLogSegmentSeqNo = firstLogSegmentSeqNo;
    setFirstLogSegmentSeqNoIsSet(true);
    return this;
  }

  public void unsetFirstLogSegmentSeqNo() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __FIRSTLOGSEGMENTSEQNO_ISSET_ID);
  }

  /** Returns true if field firstLogSegmentSeqNo is set (has been assigned a value) and false otherwise */
  public boolean isSetFirstLogSegmentSeqNo() {
    return EncodingUtils.testBit(__isset_bitfield, __FIRSTLOGSEGMENTSEQNO_ISSET_ID);
  }

  public void setFirstLogSegmentSeqNoIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __FIRSTLOGSEGMENTSEQNO_ISSET_ID, value);
  }

  public boolean isFederatedNamespace() {
    return this.federatedNamespace;
  }

  public BKDLConfigFormat setFederatedNamespace(boolean federatedNamespace) {
    this.federatedNamespace = federatedNamespace;
    setFederatedNamespaceIsSet(true);
    return this;
  }

  public void unsetFederatedNamespace() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __FEDERATEDNAMESPACE_ISSET_ID);
  }

  /** Returns true if field federatedNamespace is set (has been assigned a value) and false otherwise */
  public boolean isSetFederatedNamespace() {
    return EncodingUtils.testBit(__isset_bitfield, __FEDERATEDNAMESPACE_ISSET_ID);
  }

  public void setFederatedNamespaceIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __FEDERATEDNAMESPACE_ISSET_ID, value);
  }

  public void setFieldValue(_Fields field, Object value) {
    switch (field) {
    case BK_ZK_SERVERS:
      if (value == null) {
        unsetBkZkServers();
      } else {
        setBkZkServers((String)value);
      }
      break;

    case BK_LEDGERS_PATH:
      if (value == null) {
        unsetBkLedgersPath();
      } else {
        setBkLedgersPath((String)value);
      }
      break;

    case SANITY_CHECK_TXN_ID:
      if (value == null) {
        unsetSanityCheckTxnID();
      } else {
        setSanityCheckTxnID((Boolean)value);
      }
      break;

    case ENCODE_REGION_ID:
      if (value == null) {
        unsetEncodeRegionID();
      } else {
        setEncodeRegionID((Boolean)value);
      }
      break;

    case BK_ZK_SERVERS_FOR_READER:
      if (value == null) {
        unsetBkZkServersForReader();
      } else {
        setBkZkServersForReader((String)value);
      }
      break;

    case DL_ZK_SERVERS_FOR_WRITER:
      if (value == null) {
        unsetDlZkServersForWriter();
      } else {
        setDlZkServersForWriter((String)value);
      }
      break;

    case DL_ZK_SERVERS_FOR_READER:
      if (value == null) {
        unsetDlZkServersForReader();
      } else {
        setDlZkServersForReader((String)value);
      }
      break;

    case ACL_ROOT_PATH:
      if (value == null) {
        unsetAclRootPath();
      } else {
        setAclRootPath((String)value);
      }
      break;

    case FIRST_LOG_SEGMENT_SEQ_NO:
      if (value == null) {
        unsetFirstLogSegmentSeqNo();
      } else {
        setFirstLogSegmentSeqNo((Long)value);
      }
      break;

    case FEDERATED_NAMESPACE:
      if (value == null) {
        unsetFederatedNamespace();
      } else {
        setFederatedNamespace((Boolean)value);
      }
      break;

    }
  }

  public Object getFieldValue(_Fields field) {
    switch (field) {
    case BK_ZK_SERVERS:
      return getBkZkServers();

    case BK_LEDGERS_PATH:
      return getBkLedgersPath();

    case SANITY_CHECK_TXN_ID:
      return isSanityCheckTxnID();

    case ENCODE_REGION_ID:
      return isEncodeRegionID();

    case BK_ZK_SERVERS_FOR_READER:
      return getBkZkServersForReader();

    case DL_ZK_SERVERS_FOR_WRITER:
      return getDlZkServersForWriter();

    case DL_ZK_SERVERS_FOR_READER:
      return getDlZkServersForReader();

    case ACL_ROOT_PATH:
      return getAclRootPath();

    case FIRST_LOG_SEGMENT_SEQ_NO:
      return getFirstLogSegmentSeqNo();

    case FEDERATED_NAMESPACE:
      return isFederatedNamespace();

    }
    throw new IllegalStateException();
  }

  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
  public boolean isSet(_Fields field) {
    if (field == null) {
      throw new IllegalArgumentException();
    }

    switch (field) {
    case BK_ZK_SERVERS:
      return isSetBkZkServers();
    case BK_LEDGERS_PATH:
      return isSetBkLedgersPath();
    case SANITY_CHECK_TXN_ID:
      return isSetSanityCheckTxnID();
    case ENCODE_REGION_ID:
      return isSetEncodeRegionID();
    case BK_ZK_SERVERS_FOR_READER:
      return isSetBkZkServersForReader();
    case DL_ZK_SERVERS_FOR_WRITER:
      return isSetDlZkServersForWriter();
    case DL_ZK_SERVERS_FOR_READER:
      return isSetDlZkServersForReader();
    case ACL_ROOT_PATH:
      return isSetAclRootPath();
    case FIRST_LOG_SEGMENT_SEQ_NO:
      return isSetFirstLogSegmentSeqNo();
    case FEDERATED_NAMESPACE:
      return isSetFederatedNamespace();
    }
    throw new IllegalStateException();
  }

  @Override
  public boolean equals(Object that) {
    if (that == null)
      return false;
    if (that instanceof BKDLConfigFormat)
      return this.equals((BKDLConfigFormat)that);
    return false;
  }

  public boolean equals(BKDLConfigFormat that) {
    if (that == null)
      return false;

    boolean this_present_bkZkServers = true && this.isSetBkZkServers();
    boolean that_present_bkZkServers = true && that.isSetBkZkServers();
    if (this_present_bkZkServers || that_present_bkZkServers) {
      if (!(this_present_bkZkServers && that_present_bkZkServers))
        return false;
      if (!this.bkZkServers.equals(that.bkZkServers))
        return false;
    }

    boolean this_present_bkLedgersPath = true && this.isSetBkLedgersPath();
    boolean that_present_bkLedgersPath = true && that.isSetBkLedgersPath();
    if (this_present_bkLedgersPath || that_present_bkLedgersPath) {
      if (!(this_present_bkLedgersPath && that_present_bkLedgersPath))
        return false;
      if (!this.bkLedgersPath.equals(that.bkLedgersPath))
        return false;
    }

    boolean this_present_sanityCheckTxnID = true && this.isSetSanityCheckTxnID();
    boolean that_present_sanityCheckTxnID = true && that.isSetSanityCheckTxnID();
    if (this_present_sanityCheckTxnID || that_present_sanityCheckTxnID) {
      if (!(this_present_sanityCheckTxnID && that_present_sanityCheckTxnID))
        return false;
      if (this.sanityCheckTxnID != that.sanityCheckTxnID)
        return false;
    }

    boolean this_present_encodeRegionID = true && this.isSetEncodeRegionID();
    boolean that_present_encodeRegionID = true && that.isSetEncodeRegionID();
    if (this_present_encodeRegionID || that_present_encodeRegionID) {
      if (!(this_present_encodeRegionID && that_present_encodeRegionID))
        return false;
      if (this.encodeRegionID != that.encodeRegionID)
        return false;
    }

    boolean this_present_bkZkServersForReader = true && this.isSetBkZkServersForReader();
    boolean that_present_bkZkServersForReader = true && that.isSetBkZkServersForReader();
    if (this_present_bkZkServersForReader || that_present_bkZkServersForReader) {
      if (!(this_present_bkZkServersForReader && that_present_bkZkServersForReader))
        return false;
      if (!this.bkZkServersForReader.equals(that.bkZkServersForReader))
        return false;
    }

    boolean this_present_dlZkServersForWriter = true && this.isSetDlZkServersForWriter();
    boolean that_present_dlZkServersForWriter = true && that.isSetDlZkServersForWriter();
    if (this_present_dlZkServersForWriter || that_present_dlZkServersForWriter) {
      if (!(this_present_dlZkServersForWriter && that_present_dlZkServersForWriter))
        return false;
      if (!this.dlZkServersForWriter.equals(that.dlZkServersForWriter))
        return false;
    }

    boolean this_present_dlZkServersForReader = true && this.isSetDlZkServersForReader();
    boolean that_present_dlZkServersForReader = true && that.isSetDlZkServersForReader();
    if (this_present_dlZkServersForReader || that_present_dlZkServersForReader) {
      if (!(this_present_dlZkServersForReader && that_present_dlZkServersForReader))
        return false;
      if (!this.dlZkServersForReader.equals(that.dlZkServersForReader))
        return false;
    }

    boolean this_present_aclRootPath = true && this.isSetAclRootPath();
    boolean that_present_aclRootPath = true && that.isSetAclRootPath();
    if (this_present_aclRootPath || that_present_aclRootPath) {
      if (!(this_present_aclRootPath && that_present_aclRootPath))
        return false;
      if (!this.aclRootPath.equals(that.aclRootPath))
        return false;
    }

    boolean this_present_firstLogSegmentSeqNo = true && this.isSetFirstLogSegmentSeqNo();
    boolean that_present_firstLogSegmentSeqNo = true && that.isSetFirstLogSegmentSeqNo();
    if (this_present_firstLogSegmentSeqNo || that_present_firstLogSegmentSeqNo) {
      if (!(this_present_firstLogSegmentSeqNo && that_present_firstLogSegmentSeqNo))
        return false;
      if (this.firstLogSegmentSeqNo != that.firstLogSegmentSeqNo)
        return false;
    }

    boolean this_present_federatedNamespace = true && this.isSetFederatedNamespace();
    boolean that_present_federatedNamespace = true && that.isSetFederatedNamespace();
    if (this_present_federatedNamespace || that_present_federatedNamespace) {
      if (!(this_present_federatedNamespace && that_present_federatedNamespace))
        return false;
      if (this.federatedNamespace != that.federatedNamespace)
        return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    List<Object> list = new ArrayList<Object>();

    boolean present_bkZkServers = true && (isSetBkZkServers());
    list.add(present_bkZkServers);
    if (present_bkZkServers)
      list.add(bkZkServers);

    boolean present_bkLedgersPath = true && (isSetBkLedgersPath());
    list.add(present_bkLedgersPath);
    if (present_bkLedgersPath)
      list.add(bkLedgersPath);

    boolean present_sanityCheckTxnID = true && (isSetSanityCheckTxnID());
    list.add(present_sanityCheckTxnID);
    if (present_sanityCheckTxnID)
      list.add(sanityCheckTxnID);

    boolean present_encodeRegionID = true && (isSetEncodeRegionID());
    list.add(present_encodeRegionID);
    if (present_encodeRegionID)
      list.add(encodeRegionID);

    boolean present_bkZkServersForReader = true && (isSetBkZkServersForReader());
    list.add(present_bkZkServersForReader);
    if (present_bkZkServersForReader)
      list.add(bkZkServersForReader);

    boolean present_dlZkServersForWriter = true && (isSetDlZkServersForWriter());
    list.add(present_dlZkServersForWriter);
    if (present_dlZkServersForWriter)
      list.add(dlZkServersForWriter);

    boolean present_dlZkServersForReader = true && (isSetDlZkServersForReader());
    list.add(present_dlZkServersForReader);
    if (present_dlZkServersForReader)
      list.add(dlZkServersForReader);

    boolean present_aclRootPath = true && (isSetAclRootPath());
    list.add(present_aclRootPath);
    if (present_aclRootPath)
      list.add(aclRootPath);

    boolean present_firstLogSegmentSeqNo = true && (isSetFirstLogSegmentSeqNo());
    list.add(present_firstLogSegmentSeqNo);
    if (present_firstLogSegmentSeqNo)
      list.add(firstLogSegmentSeqNo);

    boolean present_federatedNamespace = true && (isSetFederatedNamespace());
    list.add(present_federatedNamespace);
    if (present_federatedNamespace)
      list.add(federatedNamespace);

    return list.hashCode();
  }

  @Override
  public int compareTo(BKDLConfigFormat other) {
    if (!getClass().equals(other.getClass())) {
      return getClass().getName().compareTo(other.getClass().getName());
    }

    int lastComparison = 0;

    lastComparison = Boolean.valueOf(isSetBkZkServers()).compareTo(other.isSetBkZkServers());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetBkZkServers()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.bkZkServers, other.bkZkServers);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetBkLedgersPath()).compareTo(other.isSetBkLedgersPath());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetBkLedgersPath()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.bkLedgersPath, other.bkLedgersPath);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetSanityCheckTxnID()).compareTo(other.isSetSanityCheckTxnID());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetSanityCheckTxnID()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sanityCheckTxnID, other.sanityCheckTxnID);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetEncodeRegionID()).compareTo(other.isSetEncodeRegionID());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetEncodeRegionID()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.encodeRegionID, other.encodeRegionID);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetBkZkServersForReader()).compareTo(other.isSetBkZkServersForReader());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetBkZkServersForReader()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.bkZkServersForReader, other.bkZkServersForReader);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetDlZkServersForWriter()).compareTo(other.isSetDlZkServersForWriter());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetDlZkServersForWriter()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dlZkServersForWriter, other.dlZkServersForWriter);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetDlZkServersForReader()).compareTo(other.isSetDlZkServersForReader());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetDlZkServersForReader()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.dlZkServersForReader, other.dlZkServersForReader);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetAclRootPath()).compareTo(other.isSetAclRootPath());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetAclRootPath()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.aclRootPath, other.aclRootPath);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetFirstLogSegmentSeqNo()).compareTo(other.isSetFirstLogSegmentSeqNo());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetFirstLogSegmentSeqNo()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.firstLogSegmentSeqNo, other.firstLogSegmentSeqNo);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetFederatedNamespace()).compareTo(other.isSetFederatedNamespace());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetFederatedNamespace()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.federatedNamespace, other.federatedNamespace);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    return 0;
  }

  public _Fields fieldForId(int fieldId) {
    return _Fields.findByThriftId(fieldId);
  }

  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
  }

  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder("BKDLConfigFormat(");
    boolean first = true;

    if (isSetBkZkServers()) {
      sb.append("bkZkServers:");
      if (this.bkZkServers == null) {
        sb.append("null");
      } else {
        sb.append(this.bkZkServers);
      }
      first = false;
    }
    if (isSetBkLedgersPath()) {
      if (!first) sb.append(", ");
      sb.append("bkLedgersPath:");
      if (this.bkLedgersPath == null) {
        sb.append("null");
      } else {
        sb.append(this.bkLedgersPath);
      }
      first = false;
    }
    if (isSetSanityCheckTxnID()) {
      if (!first) sb.append(", ");
      sb.append("sanityCheckTxnID:");
      sb.append(this.sanityCheckTxnID);
      first = false;
    }
    if (isSetEncodeRegionID()) {
      if (!first) sb.append(", ");
      sb.append("encodeRegionID:");
      sb.append(this.encodeRegionID);
      first = false;
    }
    if (isSetBkZkServersForReader()) {
      if (!first) sb.append(", ");
      sb.append("bkZkServersForReader:");
      if (this.bkZkServersForReader == null) {
        sb.append("null");
      } else {
        sb.append(this.bkZkServersForReader);
      }
      first = false;
    }
    if (isSetDlZkServersForWriter()) {
      if (!first) sb.append(", ");
      sb.append("dlZkServersForWriter:");
      if (this.dlZkServersForWriter == null) {
        sb.append("null");
      } else {
        sb.append(this.dlZkServersForWriter);
      }
      first = false;
    }
    if (isSetDlZkServersForReader()) {
      if (!first) sb.append(", ");
      sb.append("dlZkServersForReader:");
      if (this.dlZkServersForReader == null) {
        sb.append("null");
      } else {
        sb.append(this.dlZkServersForReader);
      }
      first = false;
    }
    if (isSetAclRootPath()) {
      if (!first) sb.append(", ");
      sb.append("aclRootPath:");
      if (this.aclRootPath == null) {
        sb.append("null");
      } else {
        sb.append(this.aclRootPath);
      }
      first = false;
    }
    if (isSetFirstLogSegmentSeqNo()) {
      if (!first) sb.append(", ");
      sb.append("firstLogSegmentSeqNo:");
      sb.append(this.firstLogSegmentSeqNo);
      first = false;
    }
    if (isSetFederatedNamespace()) {
      if (!first) sb.append(", ");
      sb.append("federatedNamespace:");
      sb.append(this.federatedNamespace);
      first = false;
    }
    sb.append(")");
    return sb.toString();
  }

  public void validate() throws org.apache.thrift.TException {
    // check for required fields
    // check for sub-struct validity
  }

  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
    try {
      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
    try {
      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
      __isset_bitfield = 0;
      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private static class BKDLConfigFormatStandardSchemeFactory implements SchemeFactory {
    public BKDLConfigFormatStandardScheme getScheme() {
      return new BKDLConfigFormatStandardScheme();
    }
  }

  private static class BKDLConfigFormatStandardScheme extends StandardScheme<BKDLConfigFormat> {

    public void read(org.apache.thrift.protocol.TProtocol iprot, BKDLConfigFormat struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TField schemeField;
      iprot.readStructBegin();
      while (true)
      {
        schemeField = iprot.readFieldBegin();
        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
          break;
        }
        switch (schemeField.id) {
          case 1: // BK_ZK_SERVERS
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.bkZkServers = iprot.readString();
              struct.setBkZkServersIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // BK_LEDGERS_PATH
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.bkLedgersPath = iprot.readString();
              struct.setBkLedgersPathIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // SANITY_CHECK_TXN_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.sanityCheckTxnID = iprot.readBool();
              struct.setSanityCheckTxnIDIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // ENCODE_REGION_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.encodeRegionID = iprot.readBool();
              struct.setEncodeRegionIDIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // BK_ZK_SERVERS_FOR_READER
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.bkZkServersForReader = iprot.readString();
              struct.setBkZkServersForReaderIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // DL_ZK_SERVERS_FOR_WRITER
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.dlZkServersForWriter = iprot.readString();
              struct.setDlZkServersForWriterIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 7: // DL_ZK_SERVERS_FOR_READER
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.dlZkServersForReader = iprot.readString();
              struct.setDlZkServersForReaderIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 8: // ACL_ROOT_PATH
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.aclRootPath = iprot.readString();
              struct.setAclRootPathIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 9: // FIRST_LOG_SEGMENT_SEQ_NO
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.firstLogSegmentSeqNo = iprot.readI64();
              struct.setFirstLogSegmentSeqNoIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 10: // FEDERATED_NAMESPACE
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.federatedNamespace = iprot.readBool();
              struct.setFederatedNamespaceIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          default:
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
        }
        iprot.readFieldEnd();
      }
      iprot.readStructEnd();

      // check for required fields of primitive type, which can't be checked in the validate method
      struct.validate();
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot, BKDLConfigFormat struct) throws org.apache.thrift.TException {
      struct.validate();

      oprot.writeStructBegin(STRUCT_DESC);
      if (struct.bkZkServers != null) {
        if (struct.isSetBkZkServers()) {
          oprot.writeFieldBegin(BK_ZK_SERVERS_FIELD_DESC);
          oprot.writeString(struct.bkZkServers);
          oprot.writeFieldEnd();
        }
      }
      if (struct.bkLedgersPath != null) {
        if (struct.isSetBkLedgersPath()) {
          oprot.writeFieldBegin(BK_LEDGERS_PATH_FIELD_DESC);
          oprot.writeString(struct.bkLedgersPath);
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetSanityCheckTxnID()) {
        oprot.writeFieldBegin(SANITY_CHECK_TXN_ID_FIELD_DESC);
        oprot.writeBool(struct.sanityCheckTxnID);
        oprot.writeFieldEnd();
      }
      if (struct.isSetEncodeRegionID()) {
        oprot.writeFieldBegin(ENCODE_REGION_ID_FIELD_DESC);
        oprot.writeBool(struct.encodeRegionID);
        oprot.writeFieldEnd();
      }
      if (struct.bkZkServersForReader != null) {
        if (struct.isSetBkZkServersForReader()) {
          oprot.writeFieldBegin(BK_ZK_SERVERS_FOR_READER_FIELD_DESC);
          oprot.writeString(struct.bkZkServersForReader);
          oprot.writeFieldEnd();
        }
      }
      if (struct.dlZkServersForWriter != null) {
        if (struct.isSetDlZkServersForWriter()) {
          oprot.writeFieldBegin(DL_ZK_SERVERS_FOR_WRITER_FIELD_DESC);
          oprot.writeString(struct.dlZkServersForWriter);
          oprot.writeFieldEnd();
        }
      }
      if (struct.dlZkServersForReader != null) {
        if (struct.isSetDlZkServersForReader()) {
          oprot.writeFieldBegin(DL_ZK_SERVERS_FOR_READER_FIELD_DESC);
          oprot.writeString(struct.dlZkServersForReader);
          oprot.writeFieldEnd();
        }
      }
      if (struct.aclRootPath != null) {
        if (struct.isSetAclRootPath()) {
          oprot.writeFieldBegin(ACL_ROOT_PATH_FIELD_DESC);
          oprot.writeString(struct.aclRootPath);
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetFirstLogSegmentSeqNo()) {
        oprot.writeFieldBegin(FIRST_LOG_SEGMENT_SEQ_NO_FIELD_DESC);
        oprot.writeI64(struct.firstLogSegmentSeqNo);
        oprot.writeFieldEnd();
      }
      if (struct.isSetFederatedNamespace()) {
        oprot.writeFieldBegin(FEDERATED_NAMESPACE_FIELD_DESC);
        oprot.writeBool(struct.federatedNamespace);
        oprot.writeFieldEnd();
      }
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

  private static class BKDLConfigFormatTupleSchemeFactory implements SchemeFactory {
    public BKDLConfigFormatTupleScheme getScheme() {
      return new BKDLConfigFormatTupleScheme();
    }
  }

  private static class BKDLConfigFormatTupleScheme extends TupleScheme<BKDLConfigFormat> {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, BKDLConfigFormat struct) throws org.apache.thrift.TException {
      TTupleProtocol oprot = (TTupleProtocol) prot;
      BitSet optionals = new BitSet();
      if (struct.isSetBkZkServers()) {
        optionals.set(0);
      }
      if (struct.isSetBkLedgersPath()) {
        optionals.set(1);
      }
      if (struct.isSetSanityCheckTxnID()) {
        optionals.set(2);
      }
      if (struct.isSetEncodeRegionID()) {
        optionals.set(3);
      }
      if (struct.isSetBkZkServersForReader()) {
        optionals.set(4);
      }
      if (struct.isSetDlZkServersForWriter()) {
        optionals.set(5);
      }
      if (struct.isSetDlZkServersForReader()) {
        optionals.set(6);
      }
      if (struct.isSetAclRootPath()) {
        optionals.set(7);
      }
      if (struct.isSetFirstLogSegmentSeqNo()) {
        optionals.set(8);
      }
      if (struct.isSetFederatedNamespace()) {
        optionals.set(9);
      }
      oprot.writeBitSet(optionals, 10);
      if (struct.isSetBkZkServers()) {
        oprot.writeString(struct.bkZkServers);
      }
      if (struct.isSetBkLedgersPath()) {
        oprot.writeString(struct.bkLedgersPath);
      }
      if (struct.isSetSanityCheckTxnID()) {
        oprot.writeBool(struct.sanityCheckTxnID);
      }
      if (struct.isSetEncodeRegionID()) {
        oprot.writeBool(struct.encodeRegionID);
      }
      if (struct.isSetBkZkServersForReader()) {
        oprot.writeString(struct.bkZkServersForReader);
      }
      if (struct.isSetDlZkServersForWriter()) {
        oprot.writeString(struct.dlZkServersForWriter);
      }
      if (struct.isSetDlZkServersForReader()) {
        oprot.writeString(struct.dlZkServersForReader);
      }
      if (struct.isSetAclRootPath()) {
        oprot.writeString(struct.aclRootPath);
      }
      if (struct.isSetFirstLogSegmentSeqNo()) {
        oprot.writeI64(struct.firstLogSegmentSeqNo);
      }
      if (struct.isSetFederatedNamespace()) {
        oprot.writeBool(struct.federatedNamespace);
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, BKDLConfigFormat struct) throws org.apache.thrift.TException {
      TTupleProtocol iprot = (TTupleProtocol) prot;
      BitSet incoming = iprot.readBitSet(10);
      if (incoming.get(0)) {
        struct.bkZkServers = iprot.readString();
        struct.setBkZkServersIsSet(true);
      }
      if (incoming.get(1)) {
        struct.bkLedgersPath = iprot.readString();
        struct.setBkLedgersPathIsSet(true);
      }
      if (incoming.get(2)) {
        struct.sanityCheckTxnID = iprot.readBool();
        struct.setSanityCheckTxnIDIsSet(true);
      }
      if (incoming.get(3)) {
        struct.encodeRegionID = iprot.readBool();
        struct.setEncodeRegionIDIsSet(true);
      }
      if (incoming.get(4)) {
        struct.bkZkServersForReader = iprot.readString();
        struct.setBkZkServersForReaderIsSet(true);
      }
      if (incoming.get(5)) {
        struct.dlZkServersForWriter = iprot.readString();
        struct.setDlZkServersForWriterIsSet(true);
      }
      if (incoming.get(6)) {
        struct.dlZkServersForReader = iprot.readString();
        struct.setDlZkServersForReaderIsSet(true);
      }
      if (incoming.get(7)) {
        struct.aclRootPath = iprot.readString();
        struct.setAclRootPathIsSet(true);
      }
      if (incoming.get(8)) {
        struct.firstLogSegmentSeqNo = iprot.readI64();
        struct.setFirstLogSegmentSeqNoIsSet(true);
      }
      if (incoming.get(9)) {
        struct.federatedNamespace = iprot.readBool();
        struct.setFederatedNamespaceIsSet(true);
      }
    }
  }

}

