/**
 * Autogenerated by Thrift Compiler (0.10.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package com.navercorp.pinpoint.thrift.dto;

@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
@javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.10.0)", date = "2018-06-19")
public class TAgentInfo implements org.apache.thrift.TBase<TAgentInfo, TAgentInfo._Fields>, java.io.Serializable, Cloneable, Comparable<TAgentInfo> {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TAgentInfo");

  private static final org.apache.thrift.protocol.TField HOSTNAME_FIELD_DESC = new org.apache.thrift.protocol.TField("hostname", org.apache.thrift.protocol.TType.STRING, (short)1);
  private static final org.apache.thrift.protocol.TField IP_FIELD_DESC = new org.apache.thrift.protocol.TField("ip", org.apache.thrift.protocol.TType.STRING, (short)2);
  private static final org.apache.thrift.protocol.TField PORTS_FIELD_DESC = new org.apache.thrift.protocol.TField("ports", org.apache.thrift.protocol.TType.STRING, (short)3);
  private static final org.apache.thrift.protocol.TField AGENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("agentId", org.apache.thrift.protocol.TType.STRING, (short)4);
  private static final org.apache.thrift.protocol.TField APPLICATION_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationName", org.apache.thrift.protocol.TType.STRING, (short)5);
  private static final org.apache.thrift.protocol.TField SERVICE_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("serviceType", org.apache.thrift.protocol.TType.I16, (short)6);
  private static final org.apache.thrift.protocol.TField PID_FIELD_DESC = new org.apache.thrift.protocol.TField("pid", org.apache.thrift.protocol.TType.I32, (short)7);
  private static final org.apache.thrift.protocol.TField AGENT_VERSION_FIELD_DESC = new org.apache.thrift.protocol.TField("agentVersion", org.apache.thrift.protocol.TType.STRING, (short)8);
  private static final org.apache.thrift.protocol.TField VM_VERSION_FIELD_DESC = new org.apache.thrift.protocol.TField("vmVersion", org.apache.thrift.protocol.TType.STRING, (short)9);
  private static final org.apache.thrift.protocol.TField START_TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField("startTimestamp", org.apache.thrift.protocol.TType.I64, (short)10);
  private static final org.apache.thrift.protocol.TField END_TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField("endTimestamp", org.apache.thrift.protocol.TType.I64, (short)11);
  private static final org.apache.thrift.protocol.TField END_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("endStatus", org.apache.thrift.protocol.TType.I32, (short)12);
  private static final org.apache.thrift.protocol.TField SERVER_META_DATA_FIELD_DESC = new org.apache.thrift.protocol.TField("serverMetaData", org.apache.thrift.protocol.TType.STRUCT, (short)20);
  private static final org.apache.thrift.protocol.TField JVM_INFO_FIELD_DESC = new org.apache.thrift.protocol.TField("jvmInfo", org.apache.thrift.protocol.TType.STRUCT, (short)30);
  private static final org.apache.thrift.protocol.TField CONTAINER_FIELD_DESC = new org.apache.thrift.protocol.TField("container", org.apache.thrift.protocol.TType.BOOL, (short)40);

  private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new TAgentInfoStandardSchemeFactory();
  private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new TAgentInfoTupleSchemeFactory();

  private java.lang.String hostname; // required
  private java.lang.String ip; // required
  private java.lang.String ports; // required
  private java.lang.String agentId; // required
  private java.lang.String applicationName; // required
  private short serviceType; // required
  private int pid; // required
  private java.lang.String agentVersion; // required
  private java.lang.String vmVersion; // required
  private long startTimestamp; // required
  private long endTimestamp; // optional
  private int endStatus; // optional
  private TServerMetaData serverMetaData; // optional
  private TJvmInfo jvmInfo; // optional
  private boolean container; // 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 {
    HOSTNAME((short)1, "hostname"),
    IP((short)2, "ip"),
    PORTS((short)3, "ports"),
    AGENT_ID((short)4, "agentId"),
    APPLICATION_NAME((short)5, "applicationName"),
    SERVICE_TYPE((short)6, "serviceType"),
    PID((short)7, "pid"),
    AGENT_VERSION((short)8, "agentVersion"),
    VM_VERSION((short)9, "vmVersion"),
    START_TIMESTAMP((short)10, "startTimestamp"),
    END_TIMESTAMP((short)11, "endTimestamp"),
    END_STATUS((short)12, "endStatus"),
    SERVER_META_DATA((short)20, "serverMetaData"),
    JVM_INFO((short)30, "jvmInfo"),
    CONTAINER((short)40, "container");

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

    static {
      for (_Fields field : java.util.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: // HOSTNAME
          return HOSTNAME;
        case 2: // IP
          return IP;
        case 3: // PORTS
          return PORTS;
        case 4: // AGENT_ID
          return AGENT_ID;
        case 5: // APPLICATION_NAME
          return APPLICATION_NAME;
        case 6: // SERVICE_TYPE
          return SERVICE_TYPE;
        case 7: // PID
          return PID;
        case 8: // AGENT_VERSION
          return AGENT_VERSION;
        case 9: // VM_VERSION
          return VM_VERSION;
        case 10: // START_TIMESTAMP
          return START_TIMESTAMP;
        case 11: // END_TIMESTAMP
          return END_TIMESTAMP;
        case 12: // END_STATUS
          return END_STATUS;
        case 20: // SERVER_META_DATA
          return SERVER_META_DATA;
        case 30: // JVM_INFO
          return JVM_INFO;
        case 40: // CONTAINER
          return CONTAINER;
        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 java.lang.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(java.lang.String name) {
      return byName.get(name);
    }

    private final short _thriftId;
    private final java.lang.String _fieldName;

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

    public short getThriftFieldId() {
      return _thriftId;
    }

    public java.lang.String getFieldName() {
      return _fieldName;
    }
  }

  // isset id assignments
  private static final int __SERVICETYPE_ISSET_ID = 0;
  private static final int __PID_ISSET_ID = 1;
  private static final int __STARTTIMESTAMP_ISSET_ID = 2;
  private static final int __ENDTIMESTAMP_ISSET_ID = 3;
  private static final int __ENDSTATUS_ISSET_ID = 4;
  private static final int __CONTAINER_ISSET_ID = 5;
  private byte __isset_bitfield = 0;
  private static final _Fields optionals[] = {_Fields.END_TIMESTAMP,_Fields.END_STATUS,_Fields.SERVER_META_DATA,_Fields.JVM_INFO,_Fields.CONTAINER};
  public static final java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
  static {
    java.util.Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new java.util.EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
    tmpMap.put(_Fields.HOSTNAME, new org.apache.thrift.meta_data.FieldMetaData("hostname", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.IP, new org.apache.thrift.meta_data.FieldMetaData("ip", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.PORTS, new org.apache.thrift.meta_data.FieldMetaData("ports", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.AGENT_ID, new org.apache.thrift.meta_data.FieldMetaData("agentId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.APPLICATION_NAME, new org.apache.thrift.meta_data.FieldMetaData("applicationName", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.SERVICE_TYPE, new org.apache.thrift.meta_data.FieldMetaData("serviceType", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I16)));
    tmpMap.put(_Fields.PID, new org.apache.thrift.meta_data.FieldMetaData("pid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.AGENT_VERSION, new org.apache.thrift.meta_data.FieldMetaData("agentVersion", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.VM_VERSION, new org.apache.thrift.meta_data.FieldMetaData("vmVersion", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.START_TIMESTAMP, new org.apache.thrift.meta_data.FieldMetaData("startTimestamp", org.apache.thrift.TFieldRequirementType.DEFAULT, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.END_TIMESTAMP, new org.apache.thrift.meta_data.FieldMetaData("endTimestamp", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.END_STATUS, new org.apache.thrift.meta_data.FieldMetaData("endStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.SERVER_META_DATA, new org.apache.thrift.meta_data.FieldMetaData("serverMetaData", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TServerMetaData.class)));
    tmpMap.put(_Fields.JVM_INFO, new org.apache.thrift.meta_data.FieldMetaData("jvmInfo", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TJvmInfo.class)));
    tmpMap.put(_Fields.CONTAINER, new org.apache.thrift.meta_data.FieldMetaData("container", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TAgentInfo.class, metaDataMap);
  }

  public TAgentInfo() {
    this.container = false;

  }

  public TAgentInfo(
    java.lang.String hostname,
    java.lang.String ip,
    java.lang.String ports,
    java.lang.String agentId,
    java.lang.String applicationName,
    short serviceType,
    int pid,
    java.lang.String agentVersion,
    java.lang.String vmVersion,
    long startTimestamp)
  {
    this();
    this.hostname = hostname;
    this.ip = ip;
    this.ports = ports;
    this.agentId = agentId;
    this.applicationName = applicationName;
    this.serviceType = serviceType;
    setServiceTypeIsSet(true);
    this.pid = pid;
    setPidIsSet(true);
    this.agentVersion = agentVersion;
    this.vmVersion = vmVersion;
    this.startTimestamp = startTimestamp;
    setStartTimestampIsSet(true);
  }

  /**
   * Performs a deep copy on <i>other</i>.
   */
  public TAgentInfo(TAgentInfo other) {
    __isset_bitfield = other.__isset_bitfield;
    if (other.isSetHostname()) {
      this.hostname = other.hostname;
    }
    if (other.isSetIp()) {
      this.ip = other.ip;
    }
    if (other.isSetPorts()) {
      this.ports = other.ports;
    }
    if (other.isSetAgentId()) {
      this.agentId = other.agentId;
    }
    if (other.isSetApplicationName()) {
      this.applicationName = other.applicationName;
    }
    this.serviceType = other.serviceType;
    this.pid = other.pid;
    if (other.isSetAgentVersion()) {
      this.agentVersion = other.agentVersion;
    }
    if (other.isSetVmVersion()) {
      this.vmVersion = other.vmVersion;
    }
    this.startTimestamp = other.startTimestamp;
    this.endTimestamp = other.endTimestamp;
    this.endStatus = other.endStatus;
    if (other.isSetServerMetaData()) {
      this.serverMetaData = new TServerMetaData(other.serverMetaData);
    }
    if (other.isSetJvmInfo()) {
      this.jvmInfo = new TJvmInfo(other.jvmInfo);
    }
    this.container = other.container;
  }

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

  @Override
  public void clear() {
    this.hostname = null;
    this.ip = null;
    this.ports = null;
    this.agentId = null;
    this.applicationName = null;
    setServiceTypeIsSet(false);
    this.serviceType = 0;
    setPidIsSet(false);
    this.pid = 0;
    this.agentVersion = null;
    this.vmVersion = null;
    setStartTimestampIsSet(false);
    this.startTimestamp = 0;
    setEndTimestampIsSet(false);
    this.endTimestamp = 0;
    setEndStatusIsSet(false);
    this.endStatus = 0;
    this.serverMetaData = null;
    this.jvmInfo = null;
    this.container = false;

  }

  public java.lang.String getHostname() {
    return this.hostname;
  }

  public void setHostname(java.lang.String hostname) {
    this.hostname = hostname;
  }

  public void unsetHostname() {
    this.hostname = null;
  }

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

  public void setHostnameIsSet(boolean value) {
    if (!value) {
      this.hostname = null;
    }
  }

  public java.lang.String getIp() {
    return this.ip;
  }

  public void setIp(java.lang.String ip) {
    this.ip = ip;
  }

  public void unsetIp() {
    this.ip = null;
  }

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

  public void setIpIsSet(boolean value) {
    if (!value) {
      this.ip = null;
    }
  }

  public java.lang.String getPorts() {
    return this.ports;
  }

  public void setPorts(java.lang.String ports) {
    this.ports = ports;
  }

  public void unsetPorts() {
    this.ports = null;
  }

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

  public void setPortsIsSet(boolean value) {
    if (!value) {
      this.ports = null;
    }
  }

  public java.lang.String getAgentId() {
    return this.agentId;
  }

  public void setAgentId(java.lang.String agentId) {
    this.agentId = agentId;
  }

  public void unsetAgentId() {
    this.agentId = null;
  }

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

  public void setAgentIdIsSet(boolean value) {
    if (!value) {
      this.agentId = null;
    }
  }

  public java.lang.String getApplicationName() {
    return this.applicationName;
  }

  public void setApplicationName(java.lang.String applicationName) {
    this.applicationName = applicationName;
  }

  public void unsetApplicationName() {
    this.applicationName = null;
  }

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

  public void setApplicationNameIsSet(boolean value) {
    if (!value) {
      this.applicationName = null;
    }
  }

  public short getServiceType() {
    return this.serviceType;
  }

  public void setServiceType(short serviceType) {
    this.serviceType = serviceType;
    setServiceTypeIsSet(true);
  }

  public void unsetServiceType() {
    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __SERVICETYPE_ISSET_ID);
  }

  /** Returns true if field serviceType is set (has been assigned a value) and false otherwise */
  public boolean isSetServiceType() {
    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __SERVICETYPE_ISSET_ID);
  }

  public void setServiceTypeIsSet(boolean value) {
    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __SERVICETYPE_ISSET_ID, value);
  }

  public int getPid() {
    return this.pid;
  }

  public void setPid(int pid) {
    this.pid = pid;
    setPidIsSet(true);
  }

  public void unsetPid() {
    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __PID_ISSET_ID);
  }

  /** Returns true if field pid is set (has been assigned a value) and false otherwise */
  public boolean isSetPid() {
    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __PID_ISSET_ID);
  }

  public void setPidIsSet(boolean value) {
    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __PID_ISSET_ID, value);
  }

  public java.lang.String getAgentVersion() {
    return this.agentVersion;
  }

  public void setAgentVersion(java.lang.String agentVersion) {
    this.agentVersion = agentVersion;
  }

  public void unsetAgentVersion() {
    this.agentVersion = null;
  }

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

  public void setAgentVersionIsSet(boolean value) {
    if (!value) {
      this.agentVersion = null;
    }
  }

  public java.lang.String getVmVersion() {
    return this.vmVersion;
  }

  public void setVmVersion(java.lang.String vmVersion) {
    this.vmVersion = vmVersion;
  }

  public void unsetVmVersion() {
    this.vmVersion = null;
  }

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

  public void setVmVersionIsSet(boolean value) {
    if (!value) {
      this.vmVersion = null;
    }
  }

  public long getStartTimestamp() {
    return this.startTimestamp;
  }

  public void setStartTimestamp(long startTimestamp) {
    this.startTimestamp = startTimestamp;
    setStartTimestampIsSet(true);
  }

  public void unsetStartTimestamp() {
    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __STARTTIMESTAMP_ISSET_ID);
  }

  /** Returns true if field startTimestamp is set (has been assigned a value) and false otherwise */
  public boolean isSetStartTimestamp() {
    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __STARTTIMESTAMP_ISSET_ID);
  }

  public void setStartTimestampIsSet(boolean value) {
    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __STARTTIMESTAMP_ISSET_ID, value);
  }

  public long getEndTimestamp() {
    return this.endTimestamp;
  }

  public void setEndTimestamp(long endTimestamp) {
    this.endTimestamp = endTimestamp;
    setEndTimestampIsSet(true);
  }

  public void unsetEndTimestamp() {
    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ENDTIMESTAMP_ISSET_ID);
  }

  /** Returns true if field endTimestamp is set (has been assigned a value) and false otherwise */
  public boolean isSetEndTimestamp() {
    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ENDTIMESTAMP_ISSET_ID);
  }

  public void setEndTimestampIsSet(boolean value) {
    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ENDTIMESTAMP_ISSET_ID, value);
  }

  public int getEndStatus() {
    return this.endStatus;
  }

  public void setEndStatus(int endStatus) {
    this.endStatus = endStatus;
    setEndStatusIsSet(true);
  }

  public void unsetEndStatus() {
    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __ENDSTATUS_ISSET_ID);
  }

  /** Returns true if field endStatus is set (has been assigned a value) and false otherwise */
  public boolean isSetEndStatus() {
    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __ENDSTATUS_ISSET_ID);
  }

  public void setEndStatusIsSet(boolean value) {
    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __ENDSTATUS_ISSET_ID, value);
  }

  public TServerMetaData getServerMetaData() {
    return this.serverMetaData;
  }

  public void setServerMetaData(TServerMetaData serverMetaData) {
    this.serverMetaData = serverMetaData;
  }

  public void unsetServerMetaData() {
    this.serverMetaData = null;
  }

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

  public void setServerMetaDataIsSet(boolean value) {
    if (!value) {
      this.serverMetaData = null;
    }
  }

  public TJvmInfo getJvmInfo() {
    return this.jvmInfo;
  }

  public void setJvmInfo(TJvmInfo jvmInfo) {
    this.jvmInfo = jvmInfo;
  }

  public void unsetJvmInfo() {
    this.jvmInfo = null;
  }

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

  public void setJvmInfoIsSet(boolean value) {
    if (!value) {
      this.jvmInfo = null;
    }
  }

  public boolean isContainer() {
    return this.container;
  }

  public void setContainer(boolean container) {
    this.container = container;
    setContainerIsSet(true);
  }

  public void unsetContainer() {
    __isset_bitfield = org.apache.thrift.EncodingUtils.clearBit(__isset_bitfield, __CONTAINER_ISSET_ID);
  }

  /** Returns true if field container is set (has been assigned a value) and false otherwise */
  public boolean isSetContainer() {
    return org.apache.thrift.EncodingUtils.testBit(__isset_bitfield, __CONTAINER_ISSET_ID);
  }

  public void setContainerIsSet(boolean value) {
    __isset_bitfield = org.apache.thrift.EncodingUtils.setBit(__isset_bitfield, __CONTAINER_ISSET_ID, value);
  }

  public void setFieldValue(_Fields field, java.lang.Object value) {
    switch (field) {
    case HOSTNAME:
      if (value == null) {
        unsetHostname();
      } else {
        setHostname((java.lang.String)value);
      }
      break;

    case IP:
      if (value == null) {
        unsetIp();
      } else {
        setIp((java.lang.String)value);
      }
      break;

    case PORTS:
      if (value == null) {
        unsetPorts();
      } else {
        setPorts((java.lang.String)value);
      }
      break;

    case AGENT_ID:
      if (value == null) {
        unsetAgentId();
      } else {
        setAgentId((java.lang.String)value);
      }
      break;

    case APPLICATION_NAME:
      if (value == null) {
        unsetApplicationName();
      } else {
        setApplicationName((java.lang.String)value);
      }
      break;

    case SERVICE_TYPE:
      if (value == null) {
        unsetServiceType();
      } else {
        setServiceType((java.lang.Short)value);
      }
      break;

    case PID:
      if (value == null) {
        unsetPid();
      } else {
        setPid((java.lang.Integer)value);
      }
      break;

    case AGENT_VERSION:
      if (value == null) {
        unsetAgentVersion();
      } else {
        setAgentVersion((java.lang.String)value);
      }
      break;

    case VM_VERSION:
      if (value == null) {
        unsetVmVersion();
      } else {
        setVmVersion((java.lang.String)value);
      }
      break;

    case START_TIMESTAMP:
      if (value == null) {
        unsetStartTimestamp();
      } else {
        setStartTimestamp((java.lang.Long)value);
      }
      break;

    case END_TIMESTAMP:
      if (value == null) {
        unsetEndTimestamp();
      } else {
        setEndTimestamp((java.lang.Long)value);
      }
      break;

    case END_STATUS:
      if (value == null) {
        unsetEndStatus();
      } else {
        setEndStatus((java.lang.Integer)value);
      }
      break;

    case SERVER_META_DATA:
      if (value == null) {
        unsetServerMetaData();
      } else {
        setServerMetaData((TServerMetaData)value);
      }
      break;

    case JVM_INFO:
      if (value == null) {
        unsetJvmInfo();
      } else {
        setJvmInfo((TJvmInfo)value);
      }
      break;

    case CONTAINER:
      if (value == null) {
        unsetContainer();
      } else {
        setContainer((java.lang.Boolean)value);
      }
      break;

    }
  }

  public java.lang.Object getFieldValue(_Fields field) {
    switch (field) {
    case HOSTNAME:
      return getHostname();

    case IP:
      return getIp();

    case PORTS:
      return getPorts();

    case AGENT_ID:
      return getAgentId();

    case APPLICATION_NAME:
      return getApplicationName();

    case SERVICE_TYPE:
      return getServiceType();

    case PID:
      return getPid();

    case AGENT_VERSION:
      return getAgentVersion();

    case VM_VERSION:
      return getVmVersion();

    case START_TIMESTAMP:
      return getStartTimestamp();

    case END_TIMESTAMP:
      return getEndTimestamp();

    case END_STATUS:
      return getEndStatus();

    case SERVER_META_DATA:
      return getServerMetaData();

    case JVM_INFO:
      return getJvmInfo();

    case CONTAINER:
      return isContainer();

    }
    throw new java.lang.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 java.lang.IllegalArgumentException();
    }

    switch (field) {
    case HOSTNAME:
      return isSetHostname();
    case IP:
      return isSetIp();
    case PORTS:
      return isSetPorts();
    case AGENT_ID:
      return isSetAgentId();
    case APPLICATION_NAME:
      return isSetApplicationName();
    case SERVICE_TYPE:
      return isSetServiceType();
    case PID:
      return isSetPid();
    case AGENT_VERSION:
      return isSetAgentVersion();
    case VM_VERSION:
      return isSetVmVersion();
    case START_TIMESTAMP:
      return isSetStartTimestamp();
    case END_TIMESTAMP:
      return isSetEndTimestamp();
    case END_STATUS:
      return isSetEndStatus();
    case SERVER_META_DATA:
      return isSetServerMetaData();
    case JVM_INFO:
      return isSetJvmInfo();
    case CONTAINER:
      return isSetContainer();
    }
    throw new java.lang.IllegalStateException();
  }

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

  public boolean equals(TAgentInfo that) {
    if (that == null)
      return false;
    if (this == that)
      return true;

    boolean this_present_hostname = true && this.isSetHostname();
    boolean that_present_hostname = true && that.isSetHostname();
    if (this_present_hostname || that_present_hostname) {
      if (!(this_present_hostname && that_present_hostname))
        return false;
      if (!this.hostname.equals(that.hostname))
        return false;
    }

    boolean this_present_ip = true && this.isSetIp();
    boolean that_present_ip = true && that.isSetIp();
    if (this_present_ip || that_present_ip) {
      if (!(this_present_ip && that_present_ip))
        return false;
      if (!this.ip.equals(that.ip))
        return false;
    }

    boolean this_present_ports = true && this.isSetPorts();
    boolean that_present_ports = true && that.isSetPorts();
    if (this_present_ports || that_present_ports) {
      if (!(this_present_ports && that_present_ports))
        return false;
      if (!this.ports.equals(that.ports))
        return false;
    }

    boolean this_present_agentId = true && this.isSetAgentId();
    boolean that_present_agentId = true && that.isSetAgentId();
    if (this_present_agentId || that_present_agentId) {
      if (!(this_present_agentId && that_present_agentId))
        return false;
      if (!this.agentId.equals(that.agentId))
        return false;
    }

    boolean this_present_applicationName = true && this.isSetApplicationName();
    boolean that_present_applicationName = true && that.isSetApplicationName();
    if (this_present_applicationName || that_present_applicationName) {
      if (!(this_present_applicationName && that_present_applicationName))
        return false;
      if (!this.applicationName.equals(that.applicationName))
        return false;
    }

    boolean this_present_serviceType = true;
    boolean that_present_serviceType = true;
    if (this_present_serviceType || that_present_serviceType) {
      if (!(this_present_serviceType && that_present_serviceType))
        return false;
      if (this.serviceType != that.serviceType)
        return false;
    }

    boolean this_present_pid = true;
    boolean that_present_pid = true;
    if (this_present_pid || that_present_pid) {
      if (!(this_present_pid && that_present_pid))
        return false;
      if (this.pid != that.pid)
        return false;
    }

    boolean this_present_agentVersion = true && this.isSetAgentVersion();
    boolean that_present_agentVersion = true && that.isSetAgentVersion();
    if (this_present_agentVersion || that_present_agentVersion) {
      if (!(this_present_agentVersion && that_present_agentVersion))
        return false;
      if (!this.agentVersion.equals(that.agentVersion))
        return false;
    }

    boolean this_present_vmVersion = true && this.isSetVmVersion();
    boolean that_present_vmVersion = true && that.isSetVmVersion();
    if (this_present_vmVersion || that_present_vmVersion) {
      if (!(this_present_vmVersion && that_present_vmVersion))
        return false;
      if (!this.vmVersion.equals(that.vmVersion))
        return false;
    }

    boolean this_present_startTimestamp = true;
    boolean that_present_startTimestamp = true;
    if (this_present_startTimestamp || that_present_startTimestamp) {
      if (!(this_present_startTimestamp && that_present_startTimestamp))
        return false;
      if (this.startTimestamp != that.startTimestamp)
        return false;
    }

    boolean this_present_endTimestamp = true && this.isSetEndTimestamp();
    boolean that_present_endTimestamp = true && that.isSetEndTimestamp();
    if (this_present_endTimestamp || that_present_endTimestamp) {
      if (!(this_present_endTimestamp && that_present_endTimestamp))
        return false;
      if (this.endTimestamp != that.endTimestamp)
        return false;
    }

    boolean this_present_endStatus = true && this.isSetEndStatus();
    boolean that_present_endStatus = true && that.isSetEndStatus();
    if (this_present_endStatus || that_present_endStatus) {
      if (!(this_present_endStatus && that_present_endStatus))
        return false;
      if (this.endStatus != that.endStatus)
        return false;
    }

    boolean this_present_serverMetaData = true && this.isSetServerMetaData();
    boolean that_present_serverMetaData = true && that.isSetServerMetaData();
    if (this_present_serverMetaData || that_present_serverMetaData) {
      if (!(this_present_serverMetaData && that_present_serverMetaData))
        return false;
      if (!this.serverMetaData.equals(that.serverMetaData))
        return false;
    }

    boolean this_present_jvmInfo = true && this.isSetJvmInfo();
    boolean that_present_jvmInfo = true && that.isSetJvmInfo();
    if (this_present_jvmInfo || that_present_jvmInfo) {
      if (!(this_present_jvmInfo && that_present_jvmInfo))
        return false;
      if (!this.jvmInfo.equals(that.jvmInfo))
        return false;
    }

    boolean this_present_container = true && this.isSetContainer();
    boolean that_present_container = true && that.isSetContainer();
    if (this_present_container || that_present_container) {
      if (!(this_present_container && that_present_container))
        return false;
      if (this.container != that.container)
        return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    int hashCode = 1;

    hashCode = hashCode * 8191 + ((isSetHostname()) ? 131071 : 524287);
    if (isSetHostname())
      hashCode = hashCode * 8191 + hostname.hashCode();

    hashCode = hashCode * 8191 + ((isSetIp()) ? 131071 : 524287);
    if (isSetIp())
      hashCode = hashCode * 8191 + ip.hashCode();

    hashCode = hashCode * 8191 + ((isSetPorts()) ? 131071 : 524287);
    if (isSetPorts())
      hashCode = hashCode * 8191 + ports.hashCode();

    hashCode = hashCode * 8191 + ((isSetAgentId()) ? 131071 : 524287);
    if (isSetAgentId())
      hashCode = hashCode * 8191 + agentId.hashCode();

    hashCode = hashCode * 8191 + ((isSetApplicationName()) ? 131071 : 524287);
    if (isSetApplicationName())
      hashCode = hashCode * 8191 + applicationName.hashCode();

    hashCode = hashCode * 8191 + serviceType;

    hashCode = hashCode * 8191 + pid;

    hashCode = hashCode * 8191 + ((isSetAgentVersion()) ? 131071 : 524287);
    if (isSetAgentVersion())
      hashCode = hashCode * 8191 + agentVersion.hashCode();

    hashCode = hashCode * 8191 + ((isSetVmVersion()) ? 131071 : 524287);
    if (isSetVmVersion())
      hashCode = hashCode * 8191 + vmVersion.hashCode();

    hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(startTimestamp);

    hashCode = hashCode * 8191 + ((isSetEndTimestamp()) ? 131071 : 524287);
    if (isSetEndTimestamp())
      hashCode = hashCode * 8191 + org.apache.thrift.TBaseHelper.hashCode(endTimestamp);

    hashCode = hashCode * 8191 + ((isSetEndStatus()) ? 131071 : 524287);
    if (isSetEndStatus())
      hashCode = hashCode * 8191 + endStatus;

    hashCode = hashCode * 8191 + ((isSetServerMetaData()) ? 131071 : 524287);
    if (isSetServerMetaData())
      hashCode = hashCode * 8191 + serverMetaData.hashCode();

    hashCode = hashCode * 8191 + ((isSetJvmInfo()) ? 131071 : 524287);
    if (isSetJvmInfo())
      hashCode = hashCode * 8191 + jvmInfo.hashCode();

    hashCode = hashCode * 8191 + ((isSetContainer()) ? 131071 : 524287);
    if (isSetContainer())
      hashCode = hashCode * 8191 + ((container) ? 131071 : 524287);

    return hashCode;
  }

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

    int lastComparison = 0;

    lastComparison = java.lang.Boolean.valueOf(isSetHostname()).compareTo(other.isSetHostname());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetHostname()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.hostname, other.hostname);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetIp()).compareTo(other.isSetIp());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIp()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ip, other.ip);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetPorts()).compareTo(other.isSetPorts());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPorts()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ports, other.ports);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetAgentId()).compareTo(other.isSetAgentId());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetAgentId()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.agentId, other.agentId);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetApplicationName()).compareTo(other.isSetApplicationName());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetApplicationName()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.applicationName, other.applicationName);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetServiceType()).compareTo(other.isSetServiceType());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetServiceType()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.serviceType, other.serviceType);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetPid()).compareTo(other.isSetPid());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPid()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.pid, other.pid);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetAgentVersion()).compareTo(other.isSetAgentVersion());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetAgentVersion()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.agentVersion, other.agentVersion);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetVmVersion()).compareTo(other.isSetVmVersion());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetVmVersion()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.vmVersion, other.vmVersion);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetStartTimestamp()).compareTo(other.isSetStartTimestamp());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetStartTimestamp()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.startTimestamp, other.startTimestamp);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetEndTimestamp()).compareTo(other.isSetEndTimestamp());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetEndTimestamp()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.endTimestamp, other.endTimestamp);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetEndStatus()).compareTo(other.isSetEndStatus());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetEndStatus()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.endStatus, other.endStatus);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetServerMetaData()).compareTo(other.isSetServerMetaData());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetServerMetaData()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.serverMetaData, other.serverMetaData);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetJvmInfo()).compareTo(other.isSetJvmInfo());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetJvmInfo()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.jvmInfo, other.jvmInfo);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = java.lang.Boolean.valueOf(isSetContainer()).compareTo(other.isSetContainer());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetContainer()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.container, other.container);
      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 {
    scheme(iprot).read(iprot, this);
  }

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

  @Override
  public java.lang.String toString() {
    java.lang.StringBuilder sb = new java.lang.StringBuilder("TAgentInfo(");
    boolean first = true;

    sb.append("hostname:");
    if (this.hostname == null) {
      sb.append("null");
    } else {
      sb.append(this.hostname);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("ip:");
    if (this.ip == null) {
      sb.append("null");
    } else {
      sb.append(this.ip);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("ports:");
    if (this.ports == null) {
      sb.append("null");
    } else {
      sb.append(this.ports);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("agentId:");
    if (this.agentId == null) {
      sb.append("null");
    } else {
      sb.append(this.agentId);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("applicationName:");
    if (this.applicationName == null) {
      sb.append("null");
    } else {
      sb.append(this.applicationName);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("serviceType:");
    sb.append(this.serviceType);
    first = false;
    if (!first) sb.append(", ");
    sb.append("pid:");
    sb.append(this.pid);
    first = false;
    if (!first) sb.append(", ");
    sb.append("agentVersion:");
    if (this.agentVersion == null) {
      sb.append("null");
    } else {
      sb.append(this.agentVersion);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("vmVersion:");
    if (this.vmVersion == null) {
      sb.append("null");
    } else {
      sb.append(this.vmVersion);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("startTimestamp:");
    sb.append(this.startTimestamp);
    first = false;
    if (isSetEndTimestamp()) {
      if (!first) sb.append(", ");
      sb.append("endTimestamp:");
      sb.append(this.endTimestamp);
      first = false;
    }
    if (isSetEndStatus()) {
      if (!first) sb.append(", ");
      sb.append("endStatus:");
      sb.append(this.endStatus);
      first = false;
    }
    if (isSetServerMetaData()) {
      if (!first) sb.append(", ");
      sb.append("serverMetaData:");
      if (this.serverMetaData == null) {
        sb.append("null");
      } else {
        sb.append(this.serverMetaData);
      }
      first = false;
    }
    if (isSetJvmInfo()) {
      if (!first) sb.append(", ");
      sb.append("jvmInfo:");
      if (this.jvmInfo == null) {
        sb.append("null");
      } else {
        sb.append(this.jvmInfo);
      }
      first = false;
    }
    if (isSetContainer()) {
      if (!first) sb.append(", ");
      sb.append("container:");
      sb.append(this.container);
      first = false;
    }
    sb.append(")");
    return sb.toString();
  }

  public void validate() throws org.apache.thrift.TException {
    // check for required fields
    // check for sub-struct validity
    if (serverMetaData != null) {
      serverMetaData.validate();
    }
    if (jvmInfo != null) {
      jvmInfo.validate();
    }
  }

  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, java.lang.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 TAgentInfoStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
    public TAgentInfoStandardScheme getScheme() {
      return new TAgentInfoStandardScheme();
    }
  }

  private static class TAgentInfoStandardScheme extends org.apache.thrift.scheme.StandardScheme<TAgentInfo> {

    public void read(org.apache.thrift.protocol.TProtocol iprot, TAgentInfo 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: // HOSTNAME
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.hostname = iprot.readString();
              struct.setHostnameIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // IP
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.ip = iprot.readString();
              struct.setIpIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // PORTS
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.ports = iprot.readString();
              struct.setPortsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // AGENT_ID
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.agentId = iprot.readString();
              struct.setAgentIdIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // APPLICATION_NAME
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.applicationName = iprot.readString();
              struct.setApplicationNameIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // SERVICE_TYPE
            if (schemeField.type == org.apache.thrift.protocol.TType.I16) {
              struct.serviceType = iprot.readI16();
              struct.setServiceTypeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 7: // PID
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.pid = iprot.readI32();
              struct.setPidIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 8: // AGENT_VERSION
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.agentVersion = iprot.readString();
              struct.setAgentVersionIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 9: // VM_VERSION
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.vmVersion = iprot.readString();
              struct.setVmVersionIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 10: // START_TIMESTAMP
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.startTimestamp = iprot.readI64();
              struct.setStartTimestampIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 11: // END_TIMESTAMP
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.endTimestamp = iprot.readI64();
              struct.setEndTimestampIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 12: // END_STATUS
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.endStatus = iprot.readI32();
              struct.setEndStatusIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 20: // SERVER_META_DATA
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.serverMetaData = new TServerMetaData();
              struct.serverMetaData.read(iprot);
              struct.setServerMetaDataIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 30: // JVM_INFO
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.jvmInfo = new TJvmInfo();
              struct.jvmInfo.read(iprot);
              struct.setJvmInfoIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 40: // CONTAINER
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.container = iprot.readBool();
              struct.setContainerIsSet(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();
      struct.validate();
    }

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

      oprot.writeStructBegin(STRUCT_DESC);
      if (struct.hostname != null) {
        oprot.writeFieldBegin(HOSTNAME_FIELD_DESC);
        oprot.writeString(struct.hostname);
        oprot.writeFieldEnd();
      }
      if (struct.ip != null) {
        oprot.writeFieldBegin(IP_FIELD_DESC);
        oprot.writeString(struct.ip);
        oprot.writeFieldEnd();
      }
      if (struct.ports != null) {
        oprot.writeFieldBegin(PORTS_FIELD_DESC);
        oprot.writeString(struct.ports);
        oprot.writeFieldEnd();
      }
      if (struct.agentId != null) {
        oprot.writeFieldBegin(AGENT_ID_FIELD_DESC);
        oprot.writeString(struct.agentId);
        oprot.writeFieldEnd();
      }
      if (struct.applicationName != null) {
        oprot.writeFieldBegin(APPLICATION_NAME_FIELD_DESC);
        oprot.writeString(struct.applicationName);
        oprot.writeFieldEnd();
      }
      oprot.writeFieldBegin(SERVICE_TYPE_FIELD_DESC);
      oprot.writeI16(struct.serviceType);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(PID_FIELD_DESC);
      oprot.writeI32(struct.pid);
      oprot.writeFieldEnd();
      if (struct.agentVersion != null) {
        oprot.writeFieldBegin(AGENT_VERSION_FIELD_DESC);
        oprot.writeString(struct.agentVersion);
        oprot.writeFieldEnd();
      }
      if (struct.vmVersion != null) {
        oprot.writeFieldBegin(VM_VERSION_FIELD_DESC);
        oprot.writeString(struct.vmVersion);
        oprot.writeFieldEnd();
      }
      oprot.writeFieldBegin(START_TIMESTAMP_FIELD_DESC);
      oprot.writeI64(struct.startTimestamp);
      oprot.writeFieldEnd();
      if (struct.isSetEndTimestamp()) {
        oprot.writeFieldBegin(END_TIMESTAMP_FIELD_DESC);
        oprot.writeI64(struct.endTimestamp);
        oprot.writeFieldEnd();
      }
      if (struct.isSetEndStatus()) {
        oprot.writeFieldBegin(END_STATUS_FIELD_DESC);
        oprot.writeI32(struct.endStatus);
        oprot.writeFieldEnd();
      }
      if (struct.serverMetaData != null) {
        if (struct.isSetServerMetaData()) {
          oprot.writeFieldBegin(SERVER_META_DATA_FIELD_DESC);
          struct.serverMetaData.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.jvmInfo != null) {
        if (struct.isSetJvmInfo()) {
          oprot.writeFieldBegin(JVM_INFO_FIELD_DESC);
          struct.jvmInfo.write(oprot);
          oprot.writeFieldEnd();
        }
      }
      if (struct.isSetContainer()) {
        oprot.writeFieldBegin(CONTAINER_FIELD_DESC);
        oprot.writeBool(struct.container);
        oprot.writeFieldEnd();
      }
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

  private static class TAgentInfoTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory {
    public TAgentInfoTupleScheme getScheme() {
      return new TAgentInfoTupleScheme();
    }
  }

  private static class TAgentInfoTupleScheme extends org.apache.thrift.scheme.TupleScheme<TAgentInfo> {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, TAgentInfo struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      java.util.BitSet optionals = new java.util.BitSet();
      if (struct.isSetHostname()) {
        optionals.set(0);
      }
      if (struct.isSetIp()) {
        optionals.set(1);
      }
      if (struct.isSetPorts()) {
        optionals.set(2);
      }
      if (struct.isSetAgentId()) {
        optionals.set(3);
      }
      if (struct.isSetApplicationName()) {
        optionals.set(4);
      }
      if (struct.isSetServiceType()) {
        optionals.set(5);
      }
      if (struct.isSetPid()) {
        optionals.set(6);
      }
      if (struct.isSetAgentVersion()) {
        optionals.set(7);
      }
      if (struct.isSetVmVersion()) {
        optionals.set(8);
      }
      if (struct.isSetStartTimestamp()) {
        optionals.set(9);
      }
      if (struct.isSetEndTimestamp()) {
        optionals.set(10);
      }
      if (struct.isSetEndStatus()) {
        optionals.set(11);
      }
      if (struct.isSetServerMetaData()) {
        optionals.set(12);
      }
      if (struct.isSetJvmInfo()) {
        optionals.set(13);
      }
      if (struct.isSetContainer()) {
        optionals.set(14);
      }
      oprot.writeBitSet(optionals, 15);
      if (struct.isSetHostname()) {
        oprot.writeString(struct.hostname);
      }
      if (struct.isSetIp()) {
        oprot.writeString(struct.ip);
      }
      if (struct.isSetPorts()) {
        oprot.writeString(struct.ports);
      }
      if (struct.isSetAgentId()) {
        oprot.writeString(struct.agentId);
      }
      if (struct.isSetApplicationName()) {
        oprot.writeString(struct.applicationName);
      }
      if (struct.isSetServiceType()) {
        oprot.writeI16(struct.serviceType);
      }
      if (struct.isSetPid()) {
        oprot.writeI32(struct.pid);
      }
      if (struct.isSetAgentVersion()) {
        oprot.writeString(struct.agentVersion);
      }
      if (struct.isSetVmVersion()) {
        oprot.writeString(struct.vmVersion);
      }
      if (struct.isSetStartTimestamp()) {
        oprot.writeI64(struct.startTimestamp);
      }
      if (struct.isSetEndTimestamp()) {
        oprot.writeI64(struct.endTimestamp);
      }
      if (struct.isSetEndStatus()) {
        oprot.writeI32(struct.endStatus);
      }
      if (struct.isSetServerMetaData()) {
        struct.serverMetaData.write(oprot);
      }
      if (struct.isSetJvmInfo()) {
        struct.jvmInfo.write(oprot);
      }
      if (struct.isSetContainer()) {
        oprot.writeBool(struct.container);
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, TAgentInfo struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot;
      java.util.BitSet incoming = iprot.readBitSet(15);
      if (incoming.get(0)) {
        struct.hostname = iprot.readString();
        struct.setHostnameIsSet(true);
      }
      if (incoming.get(1)) {
        struct.ip = iprot.readString();
        struct.setIpIsSet(true);
      }
      if (incoming.get(2)) {
        struct.ports = iprot.readString();
        struct.setPortsIsSet(true);
      }
      if (incoming.get(3)) {
        struct.agentId = iprot.readString();
        struct.setAgentIdIsSet(true);
      }
      if (incoming.get(4)) {
        struct.applicationName = iprot.readString();
        struct.setApplicationNameIsSet(true);
      }
      if (incoming.get(5)) {
        struct.serviceType = iprot.readI16();
        struct.setServiceTypeIsSet(true);
      }
      if (incoming.get(6)) {
        struct.pid = iprot.readI32();
        struct.setPidIsSet(true);
      }
      if (incoming.get(7)) {
        struct.agentVersion = iprot.readString();
        struct.setAgentVersionIsSet(true);
      }
      if (incoming.get(8)) {
        struct.vmVersion = iprot.readString();
        struct.setVmVersionIsSet(true);
      }
      if (incoming.get(9)) {
        struct.startTimestamp = iprot.readI64();
        struct.setStartTimestampIsSet(true);
      }
      if (incoming.get(10)) {
        struct.endTimestamp = iprot.readI64();
        struct.setEndTimestampIsSet(true);
      }
      if (incoming.get(11)) {
        struct.endStatus = iprot.readI32();
        struct.setEndStatusIsSet(true);
      }
      if (incoming.get(12)) {
        struct.serverMetaData = new TServerMetaData();
        struct.serverMetaData.read(iprot);
        struct.setServerMetaDataIsSet(true);
      }
      if (incoming.get(13)) {
        struct.jvmInfo = new TJvmInfo();
        struct.jvmInfo.read(iprot);
        struct.setJvmInfoIsSet(true);
      }
      if (incoming.get(14)) {
        struct.container = iprot.readBool();
        struct.setContainerIsSet(true);
      }
    }
  }

  private static <S extends org.apache.thrift.scheme.IScheme> S scheme(org.apache.thrift.protocol.TProtocol proto) {
    return (org.apache.thrift.scheme.StandardScheme.class.equals(proto.getScheme()) ? STANDARD_SCHEME_FACTORY : TUPLE_SCHEME_FACTORY).getScheme();
  }
}

