Pārlūkot izejas kodu

添加thriftClient

flowerpig 10 mēneši atpakaļ
vecāks
revīzija
d3ea4a9160

+ 3 - 0
src/main/java/com/ljsd/controller/PayCallbackController.java

@@ -3,6 +3,7 @@ package com.ljsd.controller;
 import com.google.gson.Gson;
 import com.ljsd.channel.Mock361YXSDK;
 import com.ljsd.channel.MockQuickSDK;
+import com.ljsd.jieling.thrift.pool.ThriftClient;
 import com.ljsd.pojo.ResMsg;
 import com.ljsd.redis.RedisKey;
 import com.ljsd.util.BaseGlobal;
@@ -100,6 +101,8 @@ public class PayCallbackController extends HttpServlet {
 
             // todo 通知发货
             // todo 各区服分配端口
+//            ThriftClient.deliveryRecharge()
+
             LOGGER.info("通知发货, payInfo = {}", payInfo);
             URIBuilder uriBuilder = new URIBuilder("http://127.0.0.1:7915/deliveryRecharge");
             uriBuilder.addParameter("uid", (String) payInfo.get("uid"));

+ 504 - 0
src/main/java/com/ljsd/jieling/thrift/idl/InvalidOperException.java

@@ -0,0 +1,504 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package com.ljsd.jieling.thrift.idl;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+/**
+ * Structs can also be exceptions, if they are nasty.
+ */
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2023-2-27")
+public class InvalidOperException extends TException implements org.apache.thrift.TBase<InvalidOperException, InvalidOperException._Fields>, java.io.Serializable, Cloneable, Comparable<InvalidOperException> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("InvalidOperException");
+
+  private static final org.apache.thrift.protocol.TField ERROR_CODE_FIELD_DESC = new org.apache.thrift.protocol.TField("errorCode", org.apache.thrift.protocol.TType.I32, (short)1);
+  private static final org.apache.thrift.protocol.TField ERROR_MESSAGE_FIELD_DESC = new org.apache.thrift.protocol.TField("errorMessage", org.apache.thrift.protocol.TType.STRING, (short)2);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new InvalidOperExceptionStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new InvalidOperExceptionTupleSchemeFactory());
+  }
+
+  public int errorCode; // required
+  public String errorMessage; // required
+
+  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+    ERROR_CODE((short)1, "errorCode"),
+    ERROR_MESSAGE((short)2, "errorMessage");
+
+    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: // ERROR_CODE
+          return ERROR_CODE;
+        case 2: // ERROR_MESSAGE
+          return ERROR_MESSAGE;
+        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 __ERRORCODE_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  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.ERROR_CODE, new org.apache.thrift.meta_data.FieldMetaData("errorCode", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    tmpMap.put(_Fields.ERROR_MESSAGE, new org.apache.thrift.meta_data.FieldMetaData("errorMessage", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(InvalidOperException.class, metaDataMap);
+  }
+
+  public InvalidOperException() {
+  }
+
+  public InvalidOperException(
+    int errorCode,
+    String errorMessage)
+  {
+    this();
+    this.errorCode = errorCode;
+    setErrorCodeIsSet(true);
+    this.errorMessage = errorMessage;
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public InvalidOperException(InvalidOperException other) {
+    __isset_bitfield = other.__isset_bitfield;
+    this.errorCode = other.errorCode;
+    if (other.isSetErrorMessage()) {
+      this.errorMessage = other.errorMessage;
+    }
+  }
+
+  public InvalidOperException deepCopy() {
+    return new InvalidOperException(this);
+  }
+
+  @Override
+  public void clear() {
+    setErrorCodeIsSet(false);
+    this.errorCode = 0;
+    this.errorMessage = null;
+  }
+
+  public int getErrorCode() {
+    return this.errorCode;
+  }
+
+  public InvalidOperException setErrorCode(int errorCode) {
+    this.errorCode = errorCode;
+    setErrorCodeIsSet(true);
+    return this;
+  }
+
+  public void unsetErrorCode() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ERRORCODE_ISSET_ID);
+  }
+
+  /** Returns true if field errorCode is set (has been assigned a value) and false otherwise */
+  public boolean isSetErrorCode() {
+    return EncodingUtils.testBit(__isset_bitfield, __ERRORCODE_ISSET_ID);
+  }
+
+  public void setErrorCodeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ERRORCODE_ISSET_ID, value);
+  }
+
+  public String getErrorMessage() {
+    return this.errorMessage;
+  }
+
+  public InvalidOperException setErrorMessage(String errorMessage) {
+    this.errorMessage = errorMessage;
+    return this;
+  }
+
+  public void unsetErrorMessage() {
+    this.errorMessage = null;
+  }
+
+  /** Returns true if field errorMessage is set (has been assigned a value) and false otherwise */
+  public boolean isSetErrorMessage() {
+    return this.errorMessage != null;
+  }
+
+  public void setErrorMessageIsSet(boolean value) {
+    if (!value) {
+      this.errorMessage = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case ERROR_CODE:
+      if (value == null) {
+        unsetErrorCode();
+      } else {
+        setErrorCode((Integer)value);
+      }
+      break;
+
+    case ERROR_MESSAGE:
+      if (value == null) {
+        unsetErrorMessage();
+      } else {
+        setErrorMessage((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case ERROR_CODE:
+      return Integer.valueOf(getErrorCode());
+
+    case ERROR_MESSAGE:
+      return getErrorMessage();
+
+    }
+    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 ERROR_CODE:
+      return isSetErrorCode();
+    case ERROR_MESSAGE:
+      return isSetErrorMessage();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof InvalidOperException)
+      return this.equals((InvalidOperException)that);
+    return false;
+  }
+
+  public boolean equals(InvalidOperException that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_errorCode = true;
+    boolean that_present_errorCode = true;
+    if (this_present_errorCode || that_present_errorCode) {
+      if (!(this_present_errorCode && that_present_errorCode))
+        return false;
+      if (this.errorCode != that.errorCode)
+        return false;
+    }
+
+    boolean this_present_errorMessage = true && this.isSetErrorMessage();
+    boolean that_present_errorMessage = true && that.isSetErrorMessage();
+    if (this_present_errorMessage || that_present_errorMessage) {
+      if (!(this_present_errorMessage && that_present_errorMessage))
+        return false;
+      if (!this.errorMessage.equals(that.errorMessage))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_errorCode = true;
+    list.add(present_errorCode);
+    if (present_errorCode)
+      list.add(errorCode);
+
+    boolean present_errorMessage = true && (isSetErrorMessage());
+    list.add(present_errorMessage);
+    if (present_errorMessage)
+      list.add(errorMessage);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(InvalidOperException other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetErrorCode()).compareTo(other.isSetErrorCode());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetErrorCode()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.errorCode, other.errorCode);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetErrorMessage()).compareTo(other.isSetErrorMessage());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetErrorMessage()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.errorMessage, other.errorMessage);
+      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("InvalidOperException(");
+    boolean first = true;
+
+    sb.append("errorCode:");
+    sb.append(this.errorCode);
+    first = false;
+    if (!first) sb.append(", ");
+    sb.append("errorMessage:");
+    if (this.errorMessage == null) {
+      sb.append("null");
+    } else {
+      sb.append(this.errorMessage);
+    }
+    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 InvalidOperExceptionStandardSchemeFactory implements SchemeFactory {
+    public InvalidOperExceptionStandardScheme getScheme() {
+      return new InvalidOperExceptionStandardScheme();
+    }
+  }
+
+  private static class InvalidOperExceptionStandardScheme extends StandardScheme<InvalidOperException> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, InvalidOperException 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: // ERROR_CODE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.errorCode = iprot.readI32();
+              struct.setErrorCodeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // ERROR_MESSAGE
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.errorMessage = iprot.readString();
+              struct.setErrorMessageIsSet(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, InvalidOperException struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      oprot.writeFieldBegin(ERROR_CODE_FIELD_DESC);
+      oprot.writeI32(struct.errorCode);
+      oprot.writeFieldEnd();
+      if (struct.errorMessage != null) {
+        oprot.writeFieldBegin(ERROR_MESSAGE_FIELD_DESC);
+        oprot.writeString(struct.errorMessage);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class InvalidOperExceptionTupleSchemeFactory implements SchemeFactory {
+    public InvalidOperExceptionTupleScheme getScheme() {
+      return new InvalidOperExceptionTupleScheme();
+    }
+  }
+
+  private static class InvalidOperExceptionTupleScheme extends TupleScheme<InvalidOperException> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, InvalidOperException struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetErrorCode()) {
+        optionals.set(0);
+      }
+      if (struct.isSetErrorMessage()) {
+        optionals.set(1);
+      }
+      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetErrorCode()) {
+        oprot.writeI32(struct.errorCode);
+      }
+      if (struct.isSetErrorMessage()) {
+        oprot.writeString(struct.errorMessage);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, InvalidOperException struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(2);
+      if (incoming.get(0)) {
+        struct.errorCode = iprot.readI32();
+        struct.setErrorCodeIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.errorMessage = iprot.readString();
+        struct.setErrorMessageIsSet(true);
+      }
+    }
+  }
+
+}
+

+ 2775 - 0
src/main/java/com/ljsd/jieling/thrift/idl/RPCMatchRequestIFace.java

@@ -0,0 +1,2775 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package com.ljsd.jieling.thrift.idl;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2023-2-27")
+public class RPCMatchRequestIFace {
+
+  public interface Iface {
+
+    public Result tryMatch(int uid, int matchType) throws org.apache.thrift.TException;
+
+    public Result cancleMatch(int uid, int matchType) throws org.apache.thrift.TException;
+
+    public void gmOutScene(int uid) throws org.apache.thrift.TException;
+
+  }
+
+  public interface AsyncIface {
+
+    public void tryMatch(int uid, int matchType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void cancleMatch(int uid, int matchType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void gmOutScene(int uid, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+  }
+
+  public static class Client extends org.apache.thrift.TServiceClient implements Iface {
+    public static class Factory implements org.apache.thrift.TServiceClientFactory<Client> {
+      public Factory() {}
+      public Client getClient(org.apache.thrift.protocol.TProtocol prot) {
+        return new Client(prot);
+      }
+      public Client getClient(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
+        return new Client(iprot, oprot);
+      }
+    }
+
+    public Client(org.apache.thrift.protocol.TProtocol prot)
+    {
+      super(prot, prot);
+    }
+
+    public Client(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
+      super(iprot, oprot);
+    }
+
+    public Result tryMatch(int uid, int matchType) throws org.apache.thrift.TException
+    {
+      send_tryMatch(uid, matchType);
+      return recv_tryMatch();
+    }
+
+    public void send_tryMatch(int uid, int matchType) throws org.apache.thrift.TException
+    {
+      tryMatch_args args = new tryMatch_args();
+      args.setUid(uid);
+      args.setMatchType(matchType);
+      sendBase("tryMatch", args);
+    }
+
+    public Result recv_tryMatch() throws org.apache.thrift.TException
+    {
+      tryMatch_result result = new tryMatch_result();
+      receiveBase(result, "tryMatch");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "tryMatch failed: unknown result");
+    }
+
+    public Result cancleMatch(int uid, int matchType) throws org.apache.thrift.TException
+    {
+      send_cancleMatch(uid, matchType);
+      return recv_cancleMatch();
+    }
+
+    public void send_cancleMatch(int uid, int matchType) throws org.apache.thrift.TException
+    {
+      cancleMatch_args args = new cancleMatch_args();
+      args.setUid(uid);
+      args.setMatchType(matchType);
+      sendBase("cancleMatch", args);
+    }
+
+    public Result recv_cancleMatch() throws org.apache.thrift.TException
+    {
+      cancleMatch_result result = new cancleMatch_result();
+      receiveBase(result, "cancleMatch");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "cancleMatch failed: unknown result");
+    }
+
+    public void gmOutScene(int uid) throws org.apache.thrift.TException
+    {
+      send_gmOutScene(uid);
+      recv_gmOutScene();
+    }
+
+    public void send_gmOutScene(int uid) throws org.apache.thrift.TException
+    {
+      gmOutScene_args args = new gmOutScene_args();
+      args.setUid(uid);
+      sendBase("gmOutScene", args);
+    }
+
+    public void recv_gmOutScene() throws org.apache.thrift.TException
+    {
+      gmOutScene_result result = new gmOutScene_result();
+      receiveBase(result, "gmOutScene");
+      return;
+    }
+
+  }
+  public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
+    public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
+      private org.apache.thrift.async.TAsyncClientManager clientManager;
+      private org.apache.thrift.protocol.TProtocolFactory protocolFactory;
+      public Factory(org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.protocol.TProtocolFactory protocolFactory) {
+        this.clientManager = clientManager;
+        this.protocolFactory = protocolFactory;
+      }
+      public AsyncClient getAsyncClient(org.apache.thrift.transport.TNonblockingTransport transport) {
+        return new AsyncClient(protocolFactory, clientManager, transport);
+      }
+    }
+
+    public AsyncClient(org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.transport.TNonblockingTransport transport) {
+      super(protocolFactory, clientManager, transport);
+    }
+
+    public void tryMatch(int uid, int matchType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      tryMatch_call method_call = new tryMatch_call(uid, matchType, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class tryMatch_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private int uid;
+      private int matchType;
+      public tryMatch_call(int uid, int matchType, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.uid = uid;
+        this.matchType = matchType;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("tryMatch", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        tryMatch_args args = new tryMatch_args();
+        args.setUid(uid);
+        args.setMatchType(matchType);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public Result getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_tryMatch();
+      }
+    }
+
+    public void cancleMatch(int uid, int matchType, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      cancleMatch_call method_call = new cancleMatch_call(uid, matchType, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class cancleMatch_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private int uid;
+      private int matchType;
+      public cancleMatch_call(int uid, int matchType, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.uid = uid;
+        this.matchType = matchType;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("cancleMatch", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        cancleMatch_args args = new cancleMatch_args();
+        args.setUid(uid);
+        args.setMatchType(matchType);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public Result getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_cancleMatch();
+      }
+    }
+
+    public void gmOutScene(int uid, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      gmOutScene_call method_call = new gmOutScene_call(uid, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class gmOutScene_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private int uid;
+      public gmOutScene_call(int uid, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.uid = uid;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("gmOutScene", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        gmOutScene_args args = new gmOutScene_args();
+        args.setUid(uid);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public void getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        (new Client(prot)).recv_gmOutScene();
+      }
+    }
+
+  }
+
+  public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor<I> implements org.apache.thrift.TProcessor {
+    private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName());
+    public Processor(I iface) {
+      super(iface, getProcessMap(new HashMap<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>>()));
+    }
+
+    protected Processor(I iface, Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
+      super(iface, getProcessMap(processMap));
+    }
+
+    private static <I extends Iface> Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> getProcessMap(Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
+      processMap.put("tryMatch", new tryMatch());
+      processMap.put("cancleMatch", new cancleMatch());
+      processMap.put("gmOutScene", new gmOutScene());
+      return processMap;
+    }
+
+    public static class tryMatch<I extends Iface> extends org.apache.thrift.ProcessFunction<I, tryMatch_args> {
+      public tryMatch() {
+        super("tryMatch");
+      }
+
+      public tryMatch_args getEmptyArgsInstance() {
+        return new tryMatch_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public tryMatch_result getResult(I iface, tryMatch_args args) throws org.apache.thrift.TException {
+        tryMatch_result result = new tryMatch_result();
+        result.success = iface.tryMatch(args.uid, args.matchType);
+        return result;
+      }
+    }
+
+    public static class cancleMatch<I extends Iface> extends org.apache.thrift.ProcessFunction<I, cancleMatch_args> {
+      public cancleMatch() {
+        super("cancleMatch");
+      }
+
+      public cancleMatch_args getEmptyArgsInstance() {
+        return new cancleMatch_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public cancleMatch_result getResult(I iface, cancleMatch_args args) throws org.apache.thrift.TException {
+        cancleMatch_result result = new cancleMatch_result();
+        result.success = iface.cancleMatch(args.uid, args.matchType);
+        return result;
+      }
+    }
+
+    public static class gmOutScene<I extends Iface> extends org.apache.thrift.ProcessFunction<I, gmOutScene_args> {
+      public gmOutScene() {
+        super("gmOutScene");
+      }
+
+      public gmOutScene_args getEmptyArgsInstance() {
+        return new gmOutScene_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public gmOutScene_result getResult(I iface, gmOutScene_args args) throws org.apache.thrift.TException {
+        gmOutScene_result result = new gmOutScene_result();
+        iface.gmOutScene(args.uid);
+        return result;
+      }
+    }
+
+  }
+
+  public static class AsyncProcessor<I extends AsyncIface> extends org.apache.thrift.TBaseAsyncProcessor<I> {
+    private static final Logger LOGGER = LoggerFactory.getLogger(AsyncProcessor.class.getName());
+    public AsyncProcessor(I iface) {
+      super(iface, getProcessMap(new HashMap<String, org.apache.thrift.AsyncProcessFunction<I, ? extends org.apache.thrift.TBase, ?>>()));
+    }
+
+    protected AsyncProcessor(I iface, Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase, ?>> processMap) {
+      super(iface, getProcessMap(processMap));
+    }
+
+    private static <I extends AsyncIface> Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase,?>> getProcessMap(Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase, ?>> processMap) {
+      processMap.put("tryMatch", new tryMatch());
+      processMap.put("cancleMatch", new cancleMatch());
+      processMap.put("gmOutScene", new gmOutScene());
+      return processMap;
+    }
+
+    public static class tryMatch<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, tryMatch_args, Result> {
+      public tryMatch() {
+        super("tryMatch");
+      }
+
+      public tryMatch_args getEmptyArgsInstance() {
+        return new tryMatch_args();
+      }
+
+      public AsyncMethodCallback<Result> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<Result>() { 
+          public void onComplete(Result o) {
+            tryMatch_result result = new tryMatch_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            tryMatch_result result = new tryMatch_result();
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, tryMatch_args args, org.apache.thrift.async.AsyncMethodCallback<Result> resultHandler) throws TException {
+        iface.tryMatch(args.uid, args.matchType,resultHandler);
+      }
+    }
+
+    public static class cancleMatch<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, cancleMatch_args, Result> {
+      public cancleMatch() {
+        super("cancleMatch");
+      }
+
+      public cancleMatch_args getEmptyArgsInstance() {
+        return new cancleMatch_args();
+      }
+
+      public AsyncMethodCallback<Result> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<Result>() { 
+          public void onComplete(Result o) {
+            cancleMatch_result result = new cancleMatch_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            cancleMatch_result result = new cancleMatch_result();
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, cancleMatch_args args, org.apache.thrift.async.AsyncMethodCallback<Result> resultHandler) throws TException {
+        iface.cancleMatch(args.uid, args.matchType,resultHandler);
+      }
+    }
+
+    public static class gmOutScene<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, gmOutScene_args, Void> {
+      public gmOutScene() {
+        super("gmOutScene");
+      }
+
+      public gmOutScene_args getEmptyArgsInstance() {
+        return new gmOutScene_args();
+      }
+
+      public AsyncMethodCallback<Void> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<Void>() { 
+          public void onComplete(Void o) {
+            gmOutScene_result result = new gmOutScene_result();
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            gmOutScene_result result = new gmOutScene_result();
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, gmOutScene_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
+        iface.gmOutScene(args.uid,resultHandler);
+      }
+    }
+
+  }
+
+  public static class tryMatch_args implements org.apache.thrift.TBase<tryMatch_args, tryMatch_args._Fields>, java.io.Serializable, Cloneable, Comparable<tryMatch_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("tryMatch_args");
+
+    private static final org.apache.thrift.protocol.TField UID_FIELD_DESC = new org.apache.thrift.protocol.TField("uid", org.apache.thrift.protocol.TType.I32, (short)1);
+    private static final org.apache.thrift.protocol.TField MATCH_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("matchType", org.apache.thrift.protocol.TType.I32, (short)2);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new tryMatch_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new tryMatch_argsTupleSchemeFactory());
+    }
+
+    public int uid; // required
+    public int matchType; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      UID((short)1, "uid"),
+      MATCH_TYPE((short)2, "matchType");
+
+      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: // UID
+            return UID;
+          case 2: // MATCH_TYPE
+            return MATCH_TYPE;
+          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 __UID_ISSET_ID = 0;
+    private static final int __MATCHTYPE_ISSET_ID = 1;
+    private byte __isset_bitfield = 0;
+    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.UID, new org.apache.thrift.meta_data.FieldMetaData("uid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.MATCH_TYPE, new org.apache.thrift.meta_data.FieldMetaData("matchType", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(tryMatch_args.class, metaDataMap);
+    }
+
+    public tryMatch_args() {
+    }
+
+    public tryMatch_args(
+      int uid,
+      int matchType)
+    {
+      this();
+      this.uid = uid;
+      setUidIsSet(true);
+      this.matchType = matchType;
+      setMatchTypeIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public tryMatch_args(tryMatch_args other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.uid = other.uid;
+      this.matchType = other.matchType;
+    }
+
+    public tryMatch_args deepCopy() {
+      return new tryMatch_args(this);
+    }
+
+    @Override
+    public void clear() {
+      setUidIsSet(false);
+      this.uid = 0;
+      setMatchTypeIsSet(false);
+      this.matchType = 0;
+    }
+
+    public int getUid() {
+      return this.uid;
+    }
+
+    public tryMatch_args setUid(int uid) {
+      this.uid = uid;
+      setUidIsSet(true);
+      return this;
+    }
+
+    public void unsetUid() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    /** Returns true if field uid is set (has been assigned a value) and false otherwise */
+    public boolean isSetUid() {
+      return EncodingUtils.testBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    public void setUidIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __UID_ISSET_ID, value);
+    }
+
+    public int getMatchType() {
+      return this.matchType;
+    }
+
+    public tryMatch_args setMatchType(int matchType) {
+      this.matchType = matchType;
+      setMatchTypeIsSet(true);
+      return this;
+    }
+
+    public void unsetMatchType() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __MATCHTYPE_ISSET_ID);
+    }
+
+    /** Returns true if field matchType is set (has been assigned a value) and false otherwise */
+    public boolean isSetMatchType() {
+      return EncodingUtils.testBit(__isset_bitfield, __MATCHTYPE_ISSET_ID);
+    }
+
+    public void setMatchTypeIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __MATCHTYPE_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case UID:
+        if (value == null) {
+          unsetUid();
+        } else {
+          setUid((Integer)value);
+        }
+        break;
+
+      case MATCH_TYPE:
+        if (value == null) {
+          unsetMatchType();
+        } else {
+          setMatchType((Integer)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case UID:
+        return Integer.valueOf(getUid());
+
+      case MATCH_TYPE:
+        return Integer.valueOf(getMatchType());
+
+      }
+      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 UID:
+        return isSetUid();
+      case MATCH_TYPE:
+        return isSetMatchType();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof tryMatch_args)
+        return this.equals((tryMatch_args)that);
+      return false;
+    }
+
+    public boolean equals(tryMatch_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_uid = true;
+      boolean that_present_uid = true;
+      if (this_present_uid || that_present_uid) {
+        if (!(this_present_uid && that_present_uid))
+          return false;
+        if (this.uid != that.uid)
+          return false;
+      }
+
+      boolean this_present_matchType = true;
+      boolean that_present_matchType = true;
+      if (this_present_matchType || that_present_matchType) {
+        if (!(this_present_matchType && that_present_matchType))
+          return false;
+        if (this.matchType != that.matchType)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_uid = true;
+      list.add(present_uid);
+      if (present_uid)
+        list.add(uid);
+
+      boolean present_matchType = true;
+      list.add(present_matchType);
+      if (present_matchType)
+        list.add(matchType);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(tryMatch_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetUid()).compareTo(other.isSetUid());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUid()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uid, other.uid);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetMatchType()).compareTo(other.isSetMatchType());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetMatchType()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.matchType, other.matchType);
+        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("tryMatch_args(");
+      boolean first = true;
+
+      sb.append("uid:");
+      sb.append(this.uid);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("matchType:");
+      sb.append(this.matchType);
+      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 tryMatch_argsStandardSchemeFactory implements SchemeFactory {
+      public tryMatch_argsStandardScheme getScheme() {
+        return new tryMatch_argsStandardScheme();
+      }
+    }
+
+    private static class tryMatch_argsStandardScheme extends StandardScheme<tryMatch_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, tryMatch_args 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: // UID
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.uid = iprot.readI32();
+                struct.setUidIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // MATCH_TYPE
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.matchType = iprot.readI32();
+                struct.setMatchTypeIsSet(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, tryMatch_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldBegin(UID_FIELD_DESC);
+        oprot.writeI32(struct.uid);
+        oprot.writeFieldEnd();
+        oprot.writeFieldBegin(MATCH_TYPE_FIELD_DESC);
+        oprot.writeI32(struct.matchType);
+        oprot.writeFieldEnd();
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class tryMatch_argsTupleSchemeFactory implements SchemeFactory {
+      public tryMatch_argsTupleScheme getScheme() {
+        return new tryMatch_argsTupleScheme();
+      }
+    }
+
+    private static class tryMatch_argsTupleScheme extends TupleScheme<tryMatch_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, tryMatch_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetUid()) {
+          optionals.set(0);
+        }
+        if (struct.isSetMatchType()) {
+          optionals.set(1);
+        }
+        oprot.writeBitSet(optionals, 2);
+        if (struct.isSetUid()) {
+          oprot.writeI32(struct.uid);
+        }
+        if (struct.isSetMatchType()) {
+          oprot.writeI32(struct.matchType);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, tryMatch_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(2);
+        if (incoming.get(0)) {
+          struct.uid = iprot.readI32();
+          struct.setUidIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.matchType = iprot.readI32();
+          struct.setMatchTypeIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class tryMatch_result implements org.apache.thrift.TBase<tryMatch_result, tryMatch_result._Fields>, java.io.Serializable, Cloneable, Comparable<tryMatch_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("tryMatch_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new tryMatch_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new tryMatch_resultTupleSchemeFactory());
+    }
+
+    public Result success; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success");
+
+      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 0: // SUCCESS
+            return SUCCESS;
+          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
+    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.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Result.class)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(tryMatch_result.class, metaDataMap);
+    }
+
+    public tryMatch_result() {
+    }
+
+    public tryMatch_result(
+      Result success)
+    {
+      this();
+      this.success = success;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public tryMatch_result(tryMatch_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new Result(other.success);
+      }
+    }
+
+    public tryMatch_result deepCopy() {
+      return new tryMatch_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.success = null;
+    }
+
+    public Result getSuccess() {
+      return this.success;
+    }
+
+    public tryMatch_result setSuccess(Result success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((Result)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
+      }
+      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 SUCCESS:
+        return isSetSuccess();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof tryMatch_result)
+        return this.equals((tryMatch_result)that);
+      return false;
+    }
+
+    public boolean equals(tryMatch_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_success = true && (isSetSuccess());
+      list.add(present_success);
+      if (present_success)
+        list.add(success);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(tryMatch_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        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("tryMatch_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      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 (success != null) {
+        success.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, ClassNotFoundException {
+      try {
+        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 tryMatch_resultStandardSchemeFactory implements SchemeFactory {
+      public tryMatch_resultStandardScheme getScheme() {
+        return new tryMatch_resultStandardScheme();
+      }
+    }
+
+    private static class tryMatch_resultStandardScheme extends StandardScheme<tryMatch_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, tryMatch_result 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 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new Result();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(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, tryMatch_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          struct.success.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class tryMatch_resultTupleSchemeFactory implements SchemeFactory {
+      public tryMatch_resultTupleScheme getScheme() {
+        return new tryMatch_resultTupleScheme();
+      }
+    }
+
+    private static class tryMatch_resultTupleScheme extends TupleScheme<tryMatch_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, tryMatch_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, tryMatch_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.success = new Result();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class cancleMatch_args implements org.apache.thrift.TBase<cancleMatch_args, cancleMatch_args._Fields>, java.io.Serializable, Cloneable, Comparable<cancleMatch_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("cancleMatch_args");
+
+    private static final org.apache.thrift.protocol.TField UID_FIELD_DESC = new org.apache.thrift.protocol.TField("uid", org.apache.thrift.protocol.TType.I32, (short)1);
+    private static final org.apache.thrift.protocol.TField MATCH_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("matchType", org.apache.thrift.protocol.TType.I32, (short)2);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new cancleMatch_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new cancleMatch_argsTupleSchemeFactory());
+    }
+
+    public int uid; // required
+    public int matchType; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      UID((short)1, "uid"),
+      MATCH_TYPE((short)2, "matchType");
+
+      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: // UID
+            return UID;
+          case 2: // MATCH_TYPE
+            return MATCH_TYPE;
+          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 __UID_ISSET_ID = 0;
+    private static final int __MATCHTYPE_ISSET_ID = 1;
+    private byte __isset_bitfield = 0;
+    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.UID, new org.apache.thrift.meta_data.FieldMetaData("uid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.MATCH_TYPE, new org.apache.thrift.meta_data.FieldMetaData("matchType", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(cancleMatch_args.class, metaDataMap);
+    }
+
+    public cancleMatch_args() {
+    }
+
+    public cancleMatch_args(
+      int uid,
+      int matchType)
+    {
+      this();
+      this.uid = uid;
+      setUidIsSet(true);
+      this.matchType = matchType;
+      setMatchTypeIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public cancleMatch_args(cancleMatch_args other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.uid = other.uid;
+      this.matchType = other.matchType;
+    }
+
+    public cancleMatch_args deepCopy() {
+      return new cancleMatch_args(this);
+    }
+
+    @Override
+    public void clear() {
+      setUidIsSet(false);
+      this.uid = 0;
+      setMatchTypeIsSet(false);
+      this.matchType = 0;
+    }
+
+    public int getUid() {
+      return this.uid;
+    }
+
+    public cancleMatch_args setUid(int uid) {
+      this.uid = uid;
+      setUidIsSet(true);
+      return this;
+    }
+
+    public void unsetUid() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    /** Returns true if field uid is set (has been assigned a value) and false otherwise */
+    public boolean isSetUid() {
+      return EncodingUtils.testBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    public void setUidIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __UID_ISSET_ID, value);
+    }
+
+    public int getMatchType() {
+      return this.matchType;
+    }
+
+    public cancleMatch_args setMatchType(int matchType) {
+      this.matchType = matchType;
+      setMatchTypeIsSet(true);
+      return this;
+    }
+
+    public void unsetMatchType() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __MATCHTYPE_ISSET_ID);
+    }
+
+    /** Returns true if field matchType is set (has been assigned a value) and false otherwise */
+    public boolean isSetMatchType() {
+      return EncodingUtils.testBit(__isset_bitfield, __MATCHTYPE_ISSET_ID);
+    }
+
+    public void setMatchTypeIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __MATCHTYPE_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case UID:
+        if (value == null) {
+          unsetUid();
+        } else {
+          setUid((Integer)value);
+        }
+        break;
+
+      case MATCH_TYPE:
+        if (value == null) {
+          unsetMatchType();
+        } else {
+          setMatchType((Integer)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case UID:
+        return Integer.valueOf(getUid());
+
+      case MATCH_TYPE:
+        return Integer.valueOf(getMatchType());
+
+      }
+      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 UID:
+        return isSetUid();
+      case MATCH_TYPE:
+        return isSetMatchType();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof cancleMatch_args)
+        return this.equals((cancleMatch_args)that);
+      return false;
+    }
+
+    public boolean equals(cancleMatch_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_uid = true;
+      boolean that_present_uid = true;
+      if (this_present_uid || that_present_uid) {
+        if (!(this_present_uid && that_present_uid))
+          return false;
+        if (this.uid != that.uid)
+          return false;
+      }
+
+      boolean this_present_matchType = true;
+      boolean that_present_matchType = true;
+      if (this_present_matchType || that_present_matchType) {
+        if (!(this_present_matchType && that_present_matchType))
+          return false;
+        if (this.matchType != that.matchType)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_uid = true;
+      list.add(present_uid);
+      if (present_uid)
+        list.add(uid);
+
+      boolean present_matchType = true;
+      list.add(present_matchType);
+      if (present_matchType)
+        list.add(matchType);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(cancleMatch_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetUid()).compareTo(other.isSetUid());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUid()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uid, other.uid);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetMatchType()).compareTo(other.isSetMatchType());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetMatchType()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.matchType, other.matchType);
+        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("cancleMatch_args(");
+      boolean first = true;
+
+      sb.append("uid:");
+      sb.append(this.uid);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("matchType:");
+      sb.append(this.matchType);
+      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 cancleMatch_argsStandardSchemeFactory implements SchemeFactory {
+      public cancleMatch_argsStandardScheme getScheme() {
+        return new cancleMatch_argsStandardScheme();
+      }
+    }
+
+    private static class cancleMatch_argsStandardScheme extends StandardScheme<cancleMatch_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, cancleMatch_args 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: // UID
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.uid = iprot.readI32();
+                struct.setUidIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // MATCH_TYPE
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.matchType = iprot.readI32();
+                struct.setMatchTypeIsSet(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, cancleMatch_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldBegin(UID_FIELD_DESC);
+        oprot.writeI32(struct.uid);
+        oprot.writeFieldEnd();
+        oprot.writeFieldBegin(MATCH_TYPE_FIELD_DESC);
+        oprot.writeI32(struct.matchType);
+        oprot.writeFieldEnd();
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class cancleMatch_argsTupleSchemeFactory implements SchemeFactory {
+      public cancleMatch_argsTupleScheme getScheme() {
+        return new cancleMatch_argsTupleScheme();
+      }
+    }
+
+    private static class cancleMatch_argsTupleScheme extends TupleScheme<cancleMatch_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, cancleMatch_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetUid()) {
+          optionals.set(0);
+        }
+        if (struct.isSetMatchType()) {
+          optionals.set(1);
+        }
+        oprot.writeBitSet(optionals, 2);
+        if (struct.isSetUid()) {
+          oprot.writeI32(struct.uid);
+        }
+        if (struct.isSetMatchType()) {
+          oprot.writeI32(struct.matchType);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, cancleMatch_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(2);
+        if (incoming.get(0)) {
+          struct.uid = iprot.readI32();
+          struct.setUidIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.matchType = iprot.readI32();
+          struct.setMatchTypeIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class cancleMatch_result implements org.apache.thrift.TBase<cancleMatch_result, cancleMatch_result._Fields>, java.io.Serializable, Cloneable, Comparable<cancleMatch_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("cancleMatch_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new cancleMatch_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new cancleMatch_resultTupleSchemeFactory());
+    }
+
+    public Result success; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success");
+
+      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 0: // SUCCESS
+            return SUCCESS;
+          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
+    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.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Result.class)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(cancleMatch_result.class, metaDataMap);
+    }
+
+    public cancleMatch_result() {
+    }
+
+    public cancleMatch_result(
+      Result success)
+    {
+      this();
+      this.success = success;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public cancleMatch_result(cancleMatch_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new Result(other.success);
+      }
+    }
+
+    public cancleMatch_result deepCopy() {
+      return new cancleMatch_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.success = null;
+    }
+
+    public Result getSuccess() {
+      return this.success;
+    }
+
+    public cancleMatch_result setSuccess(Result success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((Result)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
+      }
+      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 SUCCESS:
+        return isSetSuccess();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof cancleMatch_result)
+        return this.equals((cancleMatch_result)that);
+      return false;
+    }
+
+    public boolean equals(cancleMatch_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_success = true && (isSetSuccess());
+      list.add(present_success);
+      if (present_success)
+        list.add(success);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(cancleMatch_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        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("cancleMatch_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      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 (success != null) {
+        success.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, ClassNotFoundException {
+      try {
+        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 cancleMatch_resultStandardSchemeFactory implements SchemeFactory {
+      public cancleMatch_resultStandardScheme getScheme() {
+        return new cancleMatch_resultStandardScheme();
+      }
+    }
+
+    private static class cancleMatch_resultStandardScheme extends StandardScheme<cancleMatch_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, cancleMatch_result 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 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new Result();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(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, cancleMatch_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          struct.success.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class cancleMatch_resultTupleSchemeFactory implements SchemeFactory {
+      public cancleMatch_resultTupleScheme getScheme() {
+        return new cancleMatch_resultTupleScheme();
+      }
+    }
+
+    private static class cancleMatch_resultTupleScheme extends TupleScheme<cancleMatch_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, cancleMatch_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, cancleMatch_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.success = new Result();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class gmOutScene_args implements org.apache.thrift.TBase<gmOutScene_args, gmOutScene_args._Fields>, java.io.Serializable, Cloneable, Comparable<gmOutScene_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("gmOutScene_args");
+
+    private static final org.apache.thrift.protocol.TField UID_FIELD_DESC = new org.apache.thrift.protocol.TField("uid", org.apache.thrift.protocol.TType.I32, (short)1);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new gmOutScene_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new gmOutScene_argsTupleSchemeFactory());
+    }
+
+    public int uid; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      UID((short)1, "uid");
+
+      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: // UID
+            return UID;
+          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 __UID_ISSET_ID = 0;
+    private byte __isset_bitfield = 0;
+    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.UID, new org.apache.thrift.meta_data.FieldMetaData("uid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(gmOutScene_args.class, metaDataMap);
+    }
+
+    public gmOutScene_args() {
+    }
+
+    public gmOutScene_args(
+      int uid)
+    {
+      this();
+      this.uid = uid;
+      setUidIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public gmOutScene_args(gmOutScene_args other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.uid = other.uid;
+    }
+
+    public gmOutScene_args deepCopy() {
+      return new gmOutScene_args(this);
+    }
+
+    @Override
+    public void clear() {
+      setUidIsSet(false);
+      this.uid = 0;
+    }
+
+    public int getUid() {
+      return this.uid;
+    }
+
+    public gmOutScene_args setUid(int uid) {
+      this.uid = uid;
+      setUidIsSet(true);
+      return this;
+    }
+
+    public void unsetUid() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    /** Returns true if field uid is set (has been assigned a value) and false otherwise */
+    public boolean isSetUid() {
+      return EncodingUtils.testBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    public void setUidIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __UID_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case UID:
+        if (value == null) {
+          unsetUid();
+        } else {
+          setUid((Integer)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case UID:
+        return Integer.valueOf(getUid());
+
+      }
+      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 UID:
+        return isSetUid();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof gmOutScene_args)
+        return this.equals((gmOutScene_args)that);
+      return false;
+    }
+
+    public boolean equals(gmOutScene_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_uid = true;
+      boolean that_present_uid = true;
+      if (this_present_uid || that_present_uid) {
+        if (!(this_present_uid && that_present_uid))
+          return false;
+        if (this.uid != that.uid)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_uid = true;
+      list.add(present_uid);
+      if (present_uid)
+        list.add(uid);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(gmOutScene_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetUid()).compareTo(other.isSetUid());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUid()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uid, other.uid);
+        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("gmOutScene_args(");
+      boolean first = true;
+
+      sb.append("uid:");
+      sb.append(this.uid);
+      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 gmOutScene_argsStandardSchemeFactory implements SchemeFactory {
+      public gmOutScene_argsStandardScheme getScheme() {
+        return new gmOutScene_argsStandardScheme();
+      }
+    }
+
+    private static class gmOutScene_argsStandardScheme extends StandardScheme<gmOutScene_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, gmOutScene_args 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: // UID
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.uid = iprot.readI32();
+                struct.setUidIsSet(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, gmOutScene_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldBegin(UID_FIELD_DESC);
+        oprot.writeI32(struct.uid);
+        oprot.writeFieldEnd();
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class gmOutScene_argsTupleSchemeFactory implements SchemeFactory {
+      public gmOutScene_argsTupleScheme getScheme() {
+        return new gmOutScene_argsTupleScheme();
+      }
+    }
+
+    private static class gmOutScene_argsTupleScheme extends TupleScheme<gmOutScene_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, gmOutScene_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetUid()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetUid()) {
+          oprot.writeI32(struct.uid);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, gmOutScene_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.uid = iprot.readI32();
+          struct.setUidIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class gmOutScene_result implements org.apache.thrift.TBase<gmOutScene_result, gmOutScene_result._Fields>, java.io.Serializable, Cloneable, Comparable<gmOutScene_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("gmOutScene_result");
+
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new gmOutScene_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new gmOutScene_resultTupleSchemeFactory());
+    }
+
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+;
+
+      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) {
+          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;
+      }
+    }
+    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);
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(gmOutScene_result.class, metaDataMap);
+    }
+
+    public gmOutScene_result() {
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public gmOutScene_result(gmOutScene_result other) {
+    }
+
+    public gmOutScene_result deepCopy() {
+      return new gmOutScene_result(this);
+    }
+
+    @Override
+    public void clear() {
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      }
+      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) {
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof gmOutScene_result)
+        return this.equals((gmOutScene_result)that);
+      return false;
+    }
+
+    public boolean equals(gmOutScene_result that) {
+      if (that == null)
+        return false;
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(gmOutScene_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      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("gmOutScene_result(");
+      boolean first = true;
+
+      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 {
+        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 gmOutScene_resultStandardSchemeFactory implements SchemeFactory {
+      public gmOutScene_resultStandardScheme getScheme() {
+        return new gmOutScene_resultStandardScheme();
+      }
+    }
+
+    private static class gmOutScene_resultStandardScheme extends StandardScheme<gmOutScene_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, gmOutScene_result 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) {
+            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, gmOutScene_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class gmOutScene_resultTupleSchemeFactory implements SchemeFactory {
+      public gmOutScene_resultTupleScheme getScheme() {
+        return new gmOutScene_resultTupleScheme();
+      }
+    }
+
+    private static class gmOutScene_resultTupleScheme extends TupleScheme<gmOutScene_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, gmOutScene_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, gmOutScene_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+      }
+    }
+
+  }
+
+}

+ 6810 - 0
src/main/java/com/ljsd/jieling/thrift/idl/RPCRequestIFace.java

@@ -0,0 +1,6810 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package com.ljsd.jieling.thrift.idl;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2023-2-27")
+public class RPCRequestIFace {
+
+  public interface Iface {
+
+    public Result deliveryRecharge(int uid, String goodsId, String openId, String orderId, long orderTime, int amount) throws InvalidOperException, org.apache.thrift.TException;
+
+    public RechargeResult getRecharge(int uid) throws org.apache.thrift.TException;
+
+    public void mathcRoomAdressInfo(int uid, int type, String address) throws org.apache.thrift.TException;
+
+    public Result sendMailToRole(int uid) throws org.apache.thrift.TException;
+
+    public Result deliveryCoupon(int gameUserId, String couponCode, String title, String content, long orderTime, List<itemData> itemId) throws org.apache.thrift.TException;
+
+    public Result deliveryOrder(int uid, String goodsId, long orderTime) throws org.apache.thrift.TException;
+
+  }
+
+  public interface AsyncIface {
+
+    public void deliveryRecharge(int uid, String goodsId, String openId, String orderId, long orderTime, int amount, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void getRecharge(int uid, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void mathcRoomAdressInfo(int uid, int type, String address, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void sendMailToRole(int uid, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void deliveryCoupon(int gameUserId, String couponCode, String title, String content, long orderTime, List<itemData> itemId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+    public void deliveryOrder(int uid, String goodsId, long orderTime, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException;
+
+  }
+
+  public static class Client extends org.apache.thrift.TServiceClient implements Iface {
+    public static class Factory implements org.apache.thrift.TServiceClientFactory<Client> {
+      public Factory() {}
+      public Client getClient(org.apache.thrift.protocol.TProtocol prot) {
+        return new Client(prot);
+      }
+      public Client getClient(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
+        return new Client(iprot, oprot);
+      }
+    }
+
+    public Client(org.apache.thrift.protocol.TProtocol prot)
+    {
+      super(prot, prot);
+    }
+
+    public Client(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) {
+      super(iprot, oprot);
+    }
+
+    public Result deliveryRecharge(int uid, String goodsId, String openId, String orderId, long orderTime, int amount) throws InvalidOperException, org.apache.thrift.TException
+    {
+      send_deliveryRecharge(uid, goodsId, openId, orderId, orderTime, amount);
+      return recv_deliveryRecharge();
+    }
+
+    public void send_deliveryRecharge(int uid, String goodsId, String openId, String orderId, long orderTime, int amount) throws org.apache.thrift.TException
+    {
+      deliveryRecharge_args args = new deliveryRecharge_args();
+      args.setUid(uid);
+      args.setGoodsId(goodsId);
+      args.setOpenId(openId);
+      args.setOrderId(orderId);
+      args.setOrderTime(orderTime);
+      args.setAmount(amount);
+      sendBase("deliveryRecharge", args);
+    }
+
+    public Result recv_deliveryRecharge() throws InvalidOperException, org.apache.thrift.TException
+    {
+      deliveryRecharge_result result = new deliveryRecharge_result();
+      receiveBase(result, "deliveryRecharge");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      if (result.ouch != null) {
+        throw result.ouch;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deliveryRecharge failed: unknown result");
+    }
+
+    public RechargeResult getRecharge(int uid) throws org.apache.thrift.TException
+    {
+      send_getRecharge(uid);
+      return recv_getRecharge();
+    }
+
+    public void send_getRecharge(int uid) throws org.apache.thrift.TException
+    {
+      getRecharge_args args = new getRecharge_args();
+      args.setUid(uid);
+      sendBase("getRecharge", args);
+    }
+
+    public RechargeResult recv_getRecharge() throws org.apache.thrift.TException
+    {
+      getRecharge_result result = new getRecharge_result();
+      receiveBase(result, "getRecharge");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "getRecharge failed: unknown result");
+    }
+
+    public void mathcRoomAdressInfo(int uid, int type, String address) throws org.apache.thrift.TException
+    {
+      send_mathcRoomAdressInfo(uid, type, address);
+      recv_mathcRoomAdressInfo();
+    }
+
+    public void send_mathcRoomAdressInfo(int uid, int type, String address) throws org.apache.thrift.TException
+    {
+      mathcRoomAdressInfo_args args = new mathcRoomAdressInfo_args();
+      args.setUid(uid);
+      args.setType(type);
+      args.setAddress(address);
+      sendBase("mathcRoomAdressInfo", args);
+    }
+
+    public void recv_mathcRoomAdressInfo() throws org.apache.thrift.TException
+    {
+      mathcRoomAdressInfo_result result = new mathcRoomAdressInfo_result();
+      receiveBase(result, "mathcRoomAdressInfo");
+      return;
+    }
+
+    public Result sendMailToRole(int uid) throws org.apache.thrift.TException
+    {
+      send_sendMailToRole(uid);
+      return recv_sendMailToRole();
+    }
+
+    public void send_sendMailToRole(int uid) throws org.apache.thrift.TException
+    {
+      sendMailToRole_args args = new sendMailToRole_args();
+      args.setUid(uid);
+      sendBase("sendMailToRole", args);
+    }
+
+    public Result recv_sendMailToRole() throws org.apache.thrift.TException
+    {
+      sendMailToRole_result result = new sendMailToRole_result();
+      receiveBase(result, "sendMailToRole");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "sendMailToRole failed: unknown result");
+    }
+
+    public Result deliveryCoupon(int gameUserId, String couponCode, String title, String content, long orderTime, List<itemData> itemId) throws org.apache.thrift.TException
+    {
+      send_deliveryCoupon(gameUserId, couponCode, title, content, orderTime, itemId);
+      return recv_deliveryCoupon();
+    }
+
+    public void send_deliveryCoupon(int gameUserId, String couponCode, String title, String content, long orderTime, List<itemData> itemId) throws org.apache.thrift.TException
+    {
+      deliveryCoupon_args args = new deliveryCoupon_args();
+      args.setGameUserId(gameUserId);
+      args.setCouponCode(couponCode);
+      args.setTitle(title);
+      args.setContent(content);
+      args.setOrderTime(orderTime);
+      args.setItemId(itemId);
+      sendBase("deliveryCoupon", args);
+    }
+
+    public Result recv_deliveryCoupon() throws org.apache.thrift.TException
+    {
+      deliveryCoupon_result result = new deliveryCoupon_result();
+      receiveBase(result, "deliveryCoupon");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deliveryCoupon failed: unknown result");
+    }
+
+    public Result deliveryOrder(int uid, String goodsId, long orderTime) throws org.apache.thrift.TException
+    {
+      send_deliveryOrder(uid, goodsId, orderTime);
+      return recv_deliveryOrder();
+    }
+
+    public void send_deliveryOrder(int uid, String goodsId, long orderTime) throws org.apache.thrift.TException
+    {
+      deliveryOrder_args args = new deliveryOrder_args();
+      args.setUid(uid);
+      args.setGoodsId(goodsId);
+      args.setOrderTime(orderTime);
+      sendBase("deliveryOrder", args);
+    }
+
+    public Result recv_deliveryOrder() throws org.apache.thrift.TException
+    {
+      deliveryOrder_result result = new deliveryOrder_result();
+      receiveBase(result, "deliveryOrder");
+      if (result.isSetSuccess()) {
+        return result.success;
+      }
+      throw new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.MISSING_RESULT, "deliveryOrder failed: unknown result");
+    }
+
+  }
+  public static class AsyncClient extends org.apache.thrift.async.TAsyncClient implements AsyncIface {
+    public static class Factory implements org.apache.thrift.async.TAsyncClientFactory<AsyncClient> {
+      private org.apache.thrift.async.TAsyncClientManager clientManager;
+      private org.apache.thrift.protocol.TProtocolFactory protocolFactory;
+      public Factory(org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.protocol.TProtocolFactory protocolFactory) {
+        this.clientManager = clientManager;
+        this.protocolFactory = protocolFactory;
+      }
+      public AsyncClient getAsyncClient(org.apache.thrift.transport.TNonblockingTransport transport) {
+        return new AsyncClient(protocolFactory, clientManager, transport);
+      }
+    }
+
+    public AsyncClient(org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.async.TAsyncClientManager clientManager, org.apache.thrift.transport.TNonblockingTransport transport) {
+      super(protocolFactory, clientManager, transport);
+    }
+
+    public void deliveryRecharge(int uid, String goodsId, String openId, String orderId, long orderTime, int amount, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      deliveryRecharge_call method_call = new deliveryRecharge_call(uid, goodsId, openId, orderId, orderTime, amount, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class deliveryRecharge_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private int uid;
+      private String goodsId;
+      private String openId;
+      private String orderId;
+      private long orderTime;
+      private int amount;
+      public deliveryRecharge_call(int uid, String goodsId, String openId, String orderId, long orderTime, int amount, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.uid = uid;
+        this.goodsId = goodsId;
+        this.openId = openId;
+        this.orderId = orderId;
+        this.orderTime = orderTime;
+        this.amount = amount;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("deliveryRecharge", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        deliveryRecharge_args args = new deliveryRecharge_args();
+        args.setUid(uid);
+        args.setGoodsId(goodsId);
+        args.setOpenId(openId);
+        args.setOrderId(orderId);
+        args.setOrderTime(orderTime);
+        args.setAmount(amount);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public Result getResult() throws InvalidOperException, org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_deliveryRecharge();
+      }
+    }
+
+    public void getRecharge(int uid, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      getRecharge_call method_call = new getRecharge_call(uid, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class getRecharge_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private int uid;
+      public getRecharge_call(int uid, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.uid = uid;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("getRecharge", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        getRecharge_args args = new getRecharge_args();
+        args.setUid(uid);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public RechargeResult getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_getRecharge();
+      }
+    }
+
+    public void mathcRoomAdressInfo(int uid, int type, String address, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      mathcRoomAdressInfo_call method_call = new mathcRoomAdressInfo_call(uid, type, address, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class mathcRoomAdressInfo_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private int uid;
+      private int type;
+      private String address;
+      public mathcRoomAdressInfo_call(int uid, int type, String address, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.uid = uid;
+        this.type = type;
+        this.address = address;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("mathcRoomAdressInfo", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        mathcRoomAdressInfo_args args = new mathcRoomAdressInfo_args();
+        args.setUid(uid);
+        args.setType(type);
+        args.setAddress(address);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public void getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        (new Client(prot)).recv_mathcRoomAdressInfo();
+      }
+    }
+
+    public void sendMailToRole(int uid, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      sendMailToRole_call method_call = new sendMailToRole_call(uid, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class sendMailToRole_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private int uid;
+      public sendMailToRole_call(int uid, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.uid = uid;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("sendMailToRole", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        sendMailToRole_args args = new sendMailToRole_args();
+        args.setUid(uid);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public Result getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_sendMailToRole();
+      }
+    }
+
+    public void deliveryCoupon(int gameUserId, String couponCode, String title, String content, long orderTime, List<itemData> itemId, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      deliveryCoupon_call method_call = new deliveryCoupon_call(gameUserId, couponCode, title, content, orderTime, itemId, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class deliveryCoupon_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private int gameUserId;
+      private String couponCode;
+      private String title;
+      private String content;
+      private long orderTime;
+      private List<itemData> itemId;
+      public deliveryCoupon_call(int gameUserId, String couponCode, String title, String content, long orderTime, List<itemData> itemId, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.gameUserId = gameUserId;
+        this.couponCode = couponCode;
+        this.title = title;
+        this.content = content;
+        this.orderTime = orderTime;
+        this.itemId = itemId;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("deliveryCoupon", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        deliveryCoupon_args args = new deliveryCoupon_args();
+        args.setGameUserId(gameUserId);
+        args.setCouponCode(couponCode);
+        args.setTitle(title);
+        args.setContent(content);
+        args.setOrderTime(orderTime);
+        args.setItemId(itemId);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public Result getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_deliveryCoupon();
+      }
+    }
+
+    public void deliveryOrder(int uid, String goodsId, long orderTime, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException {
+      checkReady();
+      deliveryOrder_call method_call = new deliveryOrder_call(uid, goodsId, orderTime, resultHandler, this, ___protocolFactory, ___transport);
+      this.___currentMethod = method_call;
+      ___manager.call(method_call);
+    }
+
+    public static class deliveryOrder_call extends org.apache.thrift.async.TAsyncMethodCall {
+      private int uid;
+      private String goodsId;
+      private long orderTime;
+      public deliveryOrder_call(int uid, String goodsId, long orderTime, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException {
+        super(client, protocolFactory, transport, resultHandler, false);
+        this.uid = uid;
+        this.goodsId = goodsId;
+        this.orderTime = orderTime;
+      }
+
+      public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apache.thrift.TException {
+        prot.writeMessageBegin(new org.apache.thrift.protocol.TMessage("deliveryOrder", org.apache.thrift.protocol.TMessageType.CALL, 0));
+        deliveryOrder_args args = new deliveryOrder_args();
+        args.setUid(uid);
+        args.setGoodsId(goodsId);
+        args.setOrderTime(orderTime);
+        args.write(prot);
+        prot.writeMessageEnd();
+      }
+
+      public Result getResult() throws org.apache.thrift.TException {
+        if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) {
+          throw new IllegalStateException("Method call not finished!");
+        }
+        org.apache.thrift.transport.TMemoryInputTransport memoryTransport = new org.apache.thrift.transport.TMemoryInputTransport(getFrameBuffer().array());
+        org.apache.thrift.protocol.TProtocol prot = client.getProtocolFactory().getProtocol(memoryTransport);
+        return (new Client(prot)).recv_deliveryOrder();
+      }
+    }
+
+  }
+
+  public static class Processor<I extends Iface> extends org.apache.thrift.TBaseProcessor<I> implements org.apache.thrift.TProcessor {
+    private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class.getName());
+    public Processor(I iface) {
+      super(iface, getProcessMap(new HashMap<String, org.apache.thrift.ProcessFunction<I, ? extends org.apache.thrift.TBase>>()));
+    }
+
+    protected Processor(I iface, Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
+      super(iface, getProcessMap(processMap));
+    }
+
+    private static <I extends Iface> Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> getProcessMap(Map<String,  org.apache.thrift.ProcessFunction<I, ? extends  org.apache.thrift.TBase>> processMap) {
+      processMap.put("deliveryRecharge", new deliveryRecharge());
+      processMap.put("getRecharge", new getRecharge());
+      processMap.put("mathcRoomAdressInfo", new mathcRoomAdressInfo());
+      processMap.put("sendMailToRole", new sendMailToRole());
+      processMap.put("deliveryCoupon", new deliveryCoupon());
+      processMap.put("deliveryOrder", new deliveryOrder());
+      return processMap;
+    }
+
+    public static class deliveryRecharge<I extends Iface> extends org.apache.thrift.ProcessFunction<I, deliveryRecharge_args> {
+      public deliveryRecharge() {
+        super("deliveryRecharge");
+      }
+
+      public deliveryRecharge_args getEmptyArgsInstance() {
+        return new deliveryRecharge_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public deliveryRecharge_result getResult(I iface, deliveryRecharge_args args) throws org.apache.thrift.TException {
+        deliveryRecharge_result result = new deliveryRecharge_result();
+        try {
+          result.success = iface.deliveryRecharge(args.uid, args.goodsId, args.openId, args.orderId, args.orderTime, args.amount);
+        } catch (InvalidOperException ouch) {
+          result.ouch = ouch;
+        }
+        return result;
+      }
+    }
+
+    public static class getRecharge<I extends Iface> extends org.apache.thrift.ProcessFunction<I, getRecharge_args> {
+      public getRecharge() {
+        super("getRecharge");
+      }
+
+      public getRecharge_args getEmptyArgsInstance() {
+        return new getRecharge_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public getRecharge_result getResult(I iface, getRecharge_args args) throws org.apache.thrift.TException {
+        getRecharge_result result = new getRecharge_result();
+        result.success = iface.getRecharge(args.uid);
+        return result;
+      }
+    }
+
+    public static class mathcRoomAdressInfo<I extends Iface> extends org.apache.thrift.ProcessFunction<I, mathcRoomAdressInfo_args> {
+      public mathcRoomAdressInfo() {
+        super("mathcRoomAdressInfo");
+      }
+
+      public mathcRoomAdressInfo_args getEmptyArgsInstance() {
+        return new mathcRoomAdressInfo_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public mathcRoomAdressInfo_result getResult(I iface, mathcRoomAdressInfo_args args) throws org.apache.thrift.TException {
+        mathcRoomAdressInfo_result result = new mathcRoomAdressInfo_result();
+        iface.mathcRoomAdressInfo(args.uid, args.type, args.address);
+        return result;
+      }
+    }
+
+    public static class sendMailToRole<I extends Iface> extends org.apache.thrift.ProcessFunction<I, sendMailToRole_args> {
+      public sendMailToRole() {
+        super("sendMailToRole");
+      }
+
+      public sendMailToRole_args getEmptyArgsInstance() {
+        return new sendMailToRole_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public sendMailToRole_result getResult(I iface, sendMailToRole_args args) throws org.apache.thrift.TException {
+        sendMailToRole_result result = new sendMailToRole_result();
+        result.success = iface.sendMailToRole(args.uid);
+        return result;
+      }
+    }
+
+    public static class deliveryCoupon<I extends Iface> extends org.apache.thrift.ProcessFunction<I, deliveryCoupon_args> {
+      public deliveryCoupon() {
+        super("deliveryCoupon");
+      }
+
+      public deliveryCoupon_args getEmptyArgsInstance() {
+        return new deliveryCoupon_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public deliveryCoupon_result getResult(I iface, deliveryCoupon_args args) throws org.apache.thrift.TException {
+        deliveryCoupon_result result = new deliveryCoupon_result();
+        result.success = iface.deliveryCoupon(args.gameUserId, args.couponCode, args.title, args.content, args.orderTime, args.itemId);
+        return result;
+      }
+    }
+
+    public static class deliveryOrder<I extends Iface> extends org.apache.thrift.ProcessFunction<I, deliveryOrder_args> {
+      public deliveryOrder() {
+        super("deliveryOrder");
+      }
+
+      public deliveryOrder_args getEmptyArgsInstance() {
+        return new deliveryOrder_args();
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public deliveryOrder_result getResult(I iface, deliveryOrder_args args) throws org.apache.thrift.TException {
+        deliveryOrder_result result = new deliveryOrder_result();
+        result.success = iface.deliveryOrder(args.uid, args.goodsId, args.orderTime);
+        return result;
+      }
+    }
+
+  }
+
+  public static class AsyncProcessor<I extends AsyncIface> extends org.apache.thrift.TBaseAsyncProcessor<I> {
+    private static final Logger LOGGER = LoggerFactory.getLogger(AsyncProcessor.class.getName());
+    public AsyncProcessor(I iface) {
+      super(iface, getProcessMap(new HashMap<String, org.apache.thrift.AsyncProcessFunction<I, ? extends org.apache.thrift.TBase, ?>>()));
+    }
+
+    protected AsyncProcessor(I iface, Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase, ?>> processMap) {
+      super(iface, getProcessMap(processMap));
+    }
+
+    private static <I extends AsyncIface> Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase,?>> getProcessMap(Map<String,  org.apache.thrift.AsyncProcessFunction<I, ? extends  org.apache.thrift.TBase, ?>> processMap) {
+      processMap.put("deliveryRecharge", new deliveryRecharge());
+      processMap.put("getRecharge", new getRecharge());
+      processMap.put("mathcRoomAdressInfo", new mathcRoomAdressInfo());
+      processMap.put("sendMailToRole", new sendMailToRole());
+      processMap.put("deliveryCoupon", new deliveryCoupon());
+      processMap.put("deliveryOrder", new deliveryOrder());
+      return processMap;
+    }
+
+    public static class deliveryRecharge<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deliveryRecharge_args, Result> {
+      public deliveryRecharge() {
+        super("deliveryRecharge");
+      }
+
+      public deliveryRecharge_args getEmptyArgsInstance() {
+        return new deliveryRecharge_args();
+      }
+
+      public AsyncMethodCallback<Result> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<Result>() { 
+          public void onComplete(Result o) {
+            deliveryRecharge_result result = new deliveryRecharge_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            deliveryRecharge_result result = new deliveryRecharge_result();
+            if (e instanceof InvalidOperException) {
+                        result.ouch = (InvalidOperException) e;
+                        result.setOuchIsSet(true);
+                        msg = result;
+            }
+             else 
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, deliveryRecharge_args args, org.apache.thrift.async.AsyncMethodCallback<Result> resultHandler) throws TException {
+        iface.deliveryRecharge(args.uid, args.goodsId, args.openId, args.orderId, args.orderTime, args.amount,resultHandler);
+      }
+    }
+
+    public static class getRecharge<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, getRecharge_args, RechargeResult> {
+      public getRecharge() {
+        super("getRecharge");
+      }
+
+      public getRecharge_args getEmptyArgsInstance() {
+        return new getRecharge_args();
+      }
+
+      public AsyncMethodCallback<RechargeResult> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<RechargeResult>() { 
+          public void onComplete(RechargeResult o) {
+            getRecharge_result result = new getRecharge_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            getRecharge_result result = new getRecharge_result();
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, getRecharge_args args, org.apache.thrift.async.AsyncMethodCallback<RechargeResult> resultHandler) throws TException {
+        iface.getRecharge(args.uid,resultHandler);
+      }
+    }
+
+    public static class mathcRoomAdressInfo<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, mathcRoomAdressInfo_args, Void> {
+      public mathcRoomAdressInfo() {
+        super("mathcRoomAdressInfo");
+      }
+
+      public mathcRoomAdressInfo_args getEmptyArgsInstance() {
+        return new mathcRoomAdressInfo_args();
+      }
+
+      public AsyncMethodCallback<Void> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<Void>() { 
+          public void onComplete(Void o) {
+            mathcRoomAdressInfo_result result = new mathcRoomAdressInfo_result();
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            mathcRoomAdressInfo_result result = new mathcRoomAdressInfo_result();
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, mathcRoomAdressInfo_args args, org.apache.thrift.async.AsyncMethodCallback<Void> resultHandler) throws TException {
+        iface.mathcRoomAdressInfo(args.uid, args.type, args.address,resultHandler);
+      }
+    }
+
+    public static class sendMailToRole<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, sendMailToRole_args, Result> {
+      public sendMailToRole() {
+        super("sendMailToRole");
+      }
+
+      public sendMailToRole_args getEmptyArgsInstance() {
+        return new sendMailToRole_args();
+      }
+
+      public AsyncMethodCallback<Result> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<Result>() { 
+          public void onComplete(Result o) {
+            sendMailToRole_result result = new sendMailToRole_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            sendMailToRole_result result = new sendMailToRole_result();
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, sendMailToRole_args args, org.apache.thrift.async.AsyncMethodCallback<Result> resultHandler) throws TException {
+        iface.sendMailToRole(args.uid,resultHandler);
+      }
+    }
+
+    public static class deliveryCoupon<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deliveryCoupon_args, Result> {
+      public deliveryCoupon() {
+        super("deliveryCoupon");
+      }
+
+      public deliveryCoupon_args getEmptyArgsInstance() {
+        return new deliveryCoupon_args();
+      }
+
+      public AsyncMethodCallback<Result> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<Result>() { 
+          public void onComplete(Result o) {
+            deliveryCoupon_result result = new deliveryCoupon_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            deliveryCoupon_result result = new deliveryCoupon_result();
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, deliveryCoupon_args args, org.apache.thrift.async.AsyncMethodCallback<Result> resultHandler) throws TException {
+        iface.deliveryCoupon(args.gameUserId, args.couponCode, args.title, args.content, args.orderTime, args.itemId,resultHandler);
+      }
+    }
+
+    public static class deliveryOrder<I extends AsyncIface> extends org.apache.thrift.AsyncProcessFunction<I, deliveryOrder_args, Result> {
+      public deliveryOrder() {
+        super("deliveryOrder");
+      }
+
+      public deliveryOrder_args getEmptyArgsInstance() {
+        return new deliveryOrder_args();
+      }
+
+      public AsyncMethodCallback<Result> getResultHandler(final AsyncFrameBuffer fb, final int seqid) {
+        final org.apache.thrift.AsyncProcessFunction fcall = this;
+        return new AsyncMethodCallback<Result>() { 
+          public void onComplete(Result o) {
+            deliveryOrder_result result = new deliveryOrder_result();
+            result.success = o;
+            try {
+              fcall.sendResponse(fb,result, org.apache.thrift.protocol.TMessageType.REPLY,seqid);
+              return;
+            } catch (Exception e) {
+              LOGGER.error("Exception writing to internal frame buffer", e);
+            }
+            fb.close();
+          }
+          public void onError(Exception e) {
+            byte msgType = org.apache.thrift.protocol.TMessageType.REPLY;
+            org.apache.thrift.TBase msg;
+            deliveryOrder_result result = new deliveryOrder_result();
+            {
+              msgType = org.apache.thrift.protocol.TMessageType.EXCEPTION;
+              msg = (org.apache.thrift.TBase)new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, e.getMessage());
+            }
+            try {
+              fcall.sendResponse(fb,msg,msgType,seqid);
+              return;
+            } catch (Exception ex) {
+              LOGGER.error("Exception writing to internal frame buffer", ex);
+            }
+            fb.close();
+          }
+        };
+      }
+
+      protected boolean isOneway() {
+        return false;
+      }
+
+      public void start(I iface, deliveryOrder_args args, org.apache.thrift.async.AsyncMethodCallback<Result> resultHandler) throws TException {
+        iface.deliveryOrder(args.uid, args.goodsId, args.orderTime,resultHandler);
+      }
+    }
+
+  }
+
+  public static class deliveryRecharge_args implements org.apache.thrift.TBase<deliveryRecharge_args, deliveryRecharge_args._Fields>, java.io.Serializable, Cloneable, Comparable<deliveryRecharge_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("deliveryRecharge_args");
+
+    private static final org.apache.thrift.protocol.TField UID_FIELD_DESC = new org.apache.thrift.protocol.TField("uid", org.apache.thrift.protocol.TType.I32, (short)1);
+    private static final org.apache.thrift.protocol.TField GOODS_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("goodsId", org.apache.thrift.protocol.TType.STRING, (short)2);
+    private static final org.apache.thrift.protocol.TField OPEN_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("openId", org.apache.thrift.protocol.TType.STRING, (short)3);
+    private static final org.apache.thrift.protocol.TField ORDER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("orderId", org.apache.thrift.protocol.TType.STRING, (short)4);
+    private static final org.apache.thrift.protocol.TField ORDER_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("orderTime", org.apache.thrift.protocol.TType.I64, (short)5);
+    private static final org.apache.thrift.protocol.TField AMOUNT_FIELD_DESC = new org.apache.thrift.protocol.TField("amount", org.apache.thrift.protocol.TType.I32, (short)6);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new deliveryRecharge_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new deliveryRecharge_argsTupleSchemeFactory());
+    }
+
+    public int uid; // required
+    public String goodsId; // required
+    public String openId; // required
+    public String orderId; // required
+    public long orderTime; // required
+    public int amount; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      UID((short)1, "uid"),
+      GOODS_ID((short)2, "goodsId"),
+      OPEN_ID((short)3, "openId"),
+      ORDER_ID((short)4, "orderId"),
+      ORDER_TIME((short)5, "orderTime"),
+      AMOUNT((short)6, "amount");
+
+      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: // UID
+            return UID;
+          case 2: // GOODS_ID
+            return GOODS_ID;
+          case 3: // OPEN_ID
+            return OPEN_ID;
+          case 4: // ORDER_ID
+            return ORDER_ID;
+          case 5: // ORDER_TIME
+            return ORDER_TIME;
+          case 6: // AMOUNT
+            return AMOUNT;
+          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 __UID_ISSET_ID = 0;
+    private static final int __ORDERTIME_ISSET_ID = 1;
+    private static final int __AMOUNT_ISSET_ID = 2;
+    private byte __isset_bitfield = 0;
+    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.UID, new org.apache.thrift.meta_data.FieldMetaData("uid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.GOODS_ID, new org.apache.thrift.meta_data.FieldMetaData("goodsId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.OPEN_ID, new org.apache.thrift.meta_data.FieldMetaData("openId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.ORDER_ID, new org.apache.thrift.meta_data.FieldMetaData("orderId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.ORDER_TIME, new org.apache.thrift.meta_data.FieldMetaData("orderTime", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+      tmpMap.put(_Fields.AMOUNT, new org.apache.thrift.meta_data.FieldMetaData("amount", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(deliveryRecharge_args.class, metaDataMap);
+    }
+
+    public deliveryRecharge_args() {
+    }
+
+    public deliveryRecharge_args(
+      int uid,
+      String goodsId,
+      String openId,
+      String orderId,
+      long orderTime,
+      int amount)
+    {
+      this();
+      this.uid = uid;
+      setUidIsSet(true);
+      this.goodsId = goodsId;
+      this.openId = openId;
+      this.orderId = orderId;
+      this.orderTime = orderTime;
+      setOrderTimeIsSet(true);
+      this.amount = amount;
+      setAmountIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public deliveryRecharge_args(deliveryRecharge_args other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.uid = other.uid;
+      if (other.isSetGoodsId()) {
+        this.goodsId = other.goodsId;
+      }
+      if (other.isSetOpenId()) {
+        this.openId = other.openId;
+      }
+      if (other.isSetOrderId()) {
+        this.orderId = other.orderId;
+      }
+      this.orderTime = other.orderTime;
+      this.amount = other.amount;
+    }
+
+    public deliveryRecharge_args deepCopy() {
+      return new deliveryRecharge_args(this);
+    }
+
+    @Override
+    public void clear() {
+      setUidIsSet(false);
+      this.uid = 0;
+      this.goodsId = null;
+      this.openId = null;
+      this.orderId = null;
+      setOrderTimeIsSet(false);
+      this.orderTime = 0;
+      setAmountIsSet(false);
+      this.amount = 0;
+    }
+
+    public int getUid() {
+      return this.uid;
+    }
+
+    public deliveryRecharge_args setUid(int uid) {
+      this.uid = uid;
+      setUidIsSet(true);
+      return this;
+    }
+
+    public void unsetUid() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    /** Returns true if field uid is set (has been assigned a value) and false otherwise */
+    public boolean isSetUid() {
+      return EncodingUtils.testBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    public void setUidIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __UID_ISSET_ID, value);
+    }
+
+    public String getGoodsId() {
+      return this.goodsId;
+    }
+
+    public deliveryRecharge_args setGoodsId(String goodsId) {
+      this.goodsId = goodsId;
+      return this;
+    }
+
+    public void unsetGoodsId() {
+      this.goodsId = null;
+    }
+
+    /** Returns true if field goodsId is set (has been assigned a value) and false otherwise */
+    public boolean isSetGoodsId() {
+      return this.goodsId != null;
+    }
+
+    public void setGoodsIdIsSet(boolean value) {
+      if (!value) {
+        this.goodsId = null;
+      }
+    }
+
+    public String getOpenId() {
+      return this.openId;
+    }
+
+    public deliveryRecharge_args setOpenId(String openId) {
+      this.openId = openId;
+      return this;
+    }
+
+    public void unsetOpenId() {
+      this.openId = null;
+    }
+
+    /** Returns true if field openId is set (has been assigned a value) and false otherwise */
+    public boolean isSetOpenId() {
+      return this.openId != null;
+    }
+
+    public void setOpenIdIsSet(boolean value) {
+      if (!value) {
+        this.openId = null;
+      }
+    }
+
+    public String getOrderId() {
+      return this.orderId;
+    }
+
+    public deliveryRecharge_args setOrderId(String orderId) {
+      this.orderId = orderId;
+      return this;
+    }
+
+    public void unsetOrderId() {
+      this.orderId = null;
+    }
+
+    /** Returns true if field orderId is set (has been assigned a value) and false otherwise */
+    public boolean isSetOrderId() {
+      return this.orderId != null;
+    }
+
+    public void setOrderIdIsSet(boolean value) {
+      if (!value) {
+        this.orderId = null;
+      }
+    }
+
+    public long getOrderTime() {
+      return this.orderTime;
+    }
+
+    public deliveryRecharge_args setOrderTime(long orderTime) {
+      this.orderTime = orderTime;
+      setOrderTimeIsSet(true);
+      return this;
+    }
+
+    public void unsetOrderTime() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ORDERTIME_ISSET_ID);
+    }
+
+    /** Returns true if field orderTime is set (has been assigned a value) and false otherwise */
+    public boolean isSetOrderTime() {
+      return EncodingUtils.testBit(__isset_bitfield, __ORDERTIME_ISSET_ID);
+    }
+
+    public void setOrderTimeIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ORDERTIME_ISSET_ID, value);
+    }
+
+    public int getAmount() {
+      return this.amount;
+    }
+
+    public deliveryRecharge_args setAmount(int amount) {
+      this.amount = amount;
+      setAmountIsSet(true);
+      return this;
+    }
+
+    public void unsetAmount() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __AMOUNT_ISSET_ID);
+    }
+
+    /** Returns true if field amount is set (has been assigned a value) and false otherwise */
+    public boolean isSetAmount() {
+      return EncodingUtils.testBit(__isset_bitfield, __AMOUNT_ISSET_ID);
+    }
+
+    public void setAmountIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __AMOUNT_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case UID:
+        if (value == null) {
+          unsetUid();
+        } else {
+          setUid((Integer)value);
+        }
+        break;
+
+      case GOODS_ID:
+        if (value == null) {
+          unsetGoodsId();
+        } else {
+          setGoodsId((String)value);
+        }
+        break;
+
+      case OPEN_ID:
+        if (value == null) {
+          unsetOpenId();
+        } else {
+          setOpenId((String)value);
+        }
+        break;
+
+      case ORDER_ID:
+        if (value == null) {
+          unsetOrderId();
+        } else {
+          setOrderId((String)value);
+        }
+        break;
+
+      case ORDER_TIME:
+        if (value == null) {
+          unsetOrderTime();
+        } else {
+          setOrderTime((Long)value);
+        }
+        break;
+
+      case AMOUNT:
+        if (value == null) {
+          unsetAmount();
+        } else {
+          setAmount((Integer)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case UID:
+        return Integer.valueOf(getUid());
+
+      case GOODS_ID:
+        return getGoodsId();
+
+      case OPEN_ID:
+        return getOpenId();
+
+      case ORDER_ID:
+        return getOrderId();
+
+      case ORDER_TIME:
+        return Long.valueOf(getOrderTime());
+
+      case AMOUNT:
+        return Integer.valueOf(getAmount());
+
+      }
+      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 UID:
+        return isSetUid();
+      case GOODS_ID:
+        return isSetGoodsId();
+      case OPEN_ID:
+        return isSetOpenId();
+      case ORDER_ID:
+        return isSetOrderId();
+      case ORDER_TIME:
+        return isSetOrderTime();
+      case AMOUNT:
+        return isSetAmount();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof deliveryRecharge_args)
+        return this.equals((deliveryRecharge_args)that);
+      return false;
+    }
+
+    public boolean equals(deliveryRecharge_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_uid = true;
+      boolean that_present_uid = true;
+      if (this_present_uid || that_present_uid) {
+        if (!(this_present_uid && that_present_uid))
+          return false;
+        if (this.uid != that.uid)
+          return false;
+      }
+
+      boolean this_present_goodsId = true && this.isSetGoodsId();
+      boolean that_present_goodsId = true && that.isSetGoodsId();
+      if (this_present_goodsId || that_present_goodsId) {
+        if (!(this_present_goodsId && that_present_goodsId))
+          return false;
+        if (!this.goodsId.equals(that.goodsId))
+          return false;
+      }
+
+      boolean this_present_openId = true && this.isSetOpenId();
+      boolean that_present_openId = true && that.isSetOpenId();
+      if (this_present_openId || that_present_openId) {
+        if (!(this_present_openId && that_present_openId))
+          return false;
+        if (!this.openId.equals(that.openId))
+          return false;
+      }
+
+      boolean this_present_orderId = true && this.isSetOrderId();
+      boolean that_present_orderId = true && that.isSetOrderId();
+      if (this_present_orderId || that_present_orderId) {
+        if (!(this_present_orderId && that_present_orderId))
+          return false;
+        if (!this.orderId.equals(that.orderId))
+          return false;
+      }
+
+      boolean this_present_orderTime = true;
+      boolean that_present_orderTime = true;
+      if (this_present_orderTime || that_present_orderTime) {
+        if (!(this_present_orderTime && that_present_orderTime))
+          return false;
+        if (this.orderTime != that.orderTime)
+          return false;
+      }
+
+      boolean this_present_amount = true;
+      boolean that_present_amount = true;
+      if (this_present_amount || that_present_amount) {
+        if (!(this_present_amount && that_present_amount))
+          return false;
+        if (this.amount != that.amount)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_uid = true;
+      list.add(present_uid);
+      if (present_uid)
+        list.add(uid);
+
+      boolean present_goodsId = true && (isSetGoodsId());
+      list.add(present_goodsId);
+      if (present_goodsId)
+        list.add(goodsId);
+
+      boolean present_openId = true && (isSetOpenId());
+      list.add(present_openId);
+      if (present_openId)
+        list.add(openId);
+
+      boolean present_orderId = true && (isSetOrderId());
+      list.add(present_orderId);
+      if (present_orderId)
+        list.add(orderId);
+
+      boolean present_orderTime = true;
+      list.add(present_orderTime);
+      if (present_orderTime)
+        list.add(orderTime);
+
+      boolean present_amount = true;
+      list.add(present_amount);
+      if (present_amount)
+        list.add(amount);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(deliveryRecharge_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetUid()).compareTo(other.isSetUid());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUid()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uid, other.uid);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetGoodsId()).compareTo(other.isSetGoodsId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetGoodsId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.goodsId, other.goodsId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetOpenId()).compareTo(other.isSetOpenId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetOpenId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.openId, other.openId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetOrderId()).compareTo(other.isSetOrderId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetOrderId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.orderId, other.orderId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetOrderTime()).compareTo(other.isSetOrderTime());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetOrderTime()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.orderTime, other.orderTime);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetAmount()).compareTo(other.isSetAmount());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAmount()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.amount, other.amount);
+        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("deliveryRecharge_args(");
+      boolean first = true;
+
+      sb.append("uid:");
+      sb.append(this.uid);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("goodsId:");
+      if (this.goodsId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.goodsId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("openId:");
+      if (this.openId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.openId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("orderId:");
+      if (this.orderId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.orderId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("orderTime:");
+      sb.append(this.orderTime);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("amount:");
+      sb.append(this.amount);
+      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 deliveryRecharge_argsStandardSchemeFactory implements SchemeFactory {
+      public deliveryRecharge_argsStandardScheme getScheme() {
+        return new deliveryRecharge_argsStandardScheme();
+      }
+    }
+
+    private static class deliveryRecharge_argsStandardScheme extends StandardScheme<deliveryRecharge_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, deliveryRecharge_args 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: // UID
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.uid = iprot.readI32();
+                struct.setUidIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // GOODS_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.goodsId = iprot.readString();
+                struct.setGoodsIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 3: // OPEN_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.openId = iprot.readString();
+                struct.setOpenIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 4: // ORDER_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.orderId = iprot.readString();
+                struct.setOrderIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 5: // ORDER_TIME
+              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+                struct.orderTime = iprot.readI64();
+                struct.setOrderTimeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 6: // AMOUNT
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.amount = iprot.readI32();
+                struct.setAmountIsSet(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, deliveryRecharge_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldBegin(UID_FIELD_DESC);
+        oprot.writeI32(struct.uid);
+        oprot.writeFieldEnd();
+        if (struct.goodsId != null) {
+          oprot.writeFieldBegin(GOODS_ID_FIELD_DESC);
+          oprot.writeString(struct.goodsId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.openId != null) {
+          oprot.writeFieldBegin(OPEN_ID_FIELD_DESC);
+          oprot.writeString(struct.openId);
+          oprot.writeFieldEnd();
+        }
+        if (struct.orderId != null) {
+          oprot.writeFieldBegin(ORDER_ID_FIELD_DESC);
+          oprot.writeString(struct.orderId);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldBegin(ORDER_TIME_FIELD_DESC);
+        oprot.writeI64(struct.orderTime);
+        oprot.writeFieldEnd();
+        oprot.writeFieldBegin(AMOUNT_FIELD_DESC);
+        oprot.writeI32(struct.amount);
+        oprot.writeFieldEnd();
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class deliveryRecharge_argsTupleSchemeFactory implements SchemeFactory {
+      public deliveryRecharge_argsTupleScheme getScheme() {
+        return new deliveryRecharge_argsTupleScheme();
+      }
+    }
+
+    private static class deliveryRecharge_argsTupleScheme extends TupleScheme<deliveryRecharge_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, deliveryRecharge_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetUid()) {
+          optionals.set(0);
+        }
+        if (struct.isSetGoodsId()) {
+          optionals.set(1);
+        }
+        if (struct.isSetOpenId()) {
+          optionals.set(2);
+        }
+        if (struct.isSetOrderId()) {
+          optionals.set(3);
+        }
+        if (struct.isSetOrderTime()) {
+          optionals.set(4);
+        }
+        if (struct.isSetAmount()) {
+          optionals.set(5);
+        }
+        oprot.writeBitSet(optionals, 6);
+        if (struct.isSetUid()) {
+          oprot.writeI32(struct.uid);
+        }
+        if (struct.isSetGoodsId()) {
+          oprot.writeString(struct.goodsId);
+        }
+        if (struct.isSetOpenId()) {
+          oprot.writeString(struct.openId);
+        }
+        if (struct.isSetOrderId()) {
+          oprot.writeString(struct.orderId);
+        }
+        if (struct.isSetOrderTime()) {
+          oprot.writeI64(struct.orderTime);
+        }
+        if (struct.isSetAmount()) {
+          oprot.writeI32(struct.amount);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, deliveryRecharge_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(6);
+        if (incoming.get(0)) {
+          struct.uid = iprot.readI32();
+          struct.setUidIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.goodsId = iprot.readString();
+          struct.setGoodsIdIsSet(true);
+        }
+        if (incoming.get(2)) {
+          struct.openId = iprot.readString();
+          struct.setOpenIdIsSet(true);
+        }
+        if (incoming.get(3)) {
+          struct.orderId = iprot.readString();
+          struct.setOrderIdIsSet(true);
+        }
+        if (incoming.get(4)) {
+          struct.orderTime = iprot.readI64();
+          struct.setOrderTimeIsSet(true);
+        }
+        if (incoming.get(5)) {
+          struct.amount = iprot.readI32();
+          struct.setAmountIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class deliveryRecharge_result implements org.apache.thrift.TBase<deliveryRecharge_result, deliveryRecharge_result._Fields>, java.io.Serializable, Cloneable, Comparable<deliveryRecharge_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("deliveryRecharge_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
+    private static final org.apache.thrift.protocol.TField OUCH_FIELD_DESC = new org.apache.thrift.protocol.TField("ouch", org.apache.thrift.protocol.TType.STRUCT, (short)1);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new deliveryRecharge_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new deliveryRecharge_resultTupleSchemeFactory());
+    }
+
+    public Result success; // required
+    public InvalidOperException ouch; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success"),
+      OUCH((short)1, "ouch");
+
+      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 0: // SUCCESS
+            return SUCCESS;
+          case 1: // OUCH
+            return OUCH;
+          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
+    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.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Result.class)));
+      tmpMap.put(_Fields.OUCH, new org.apache.thrift.meta_data.FieldMetaData("ouch", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(deliveryRecharge_result.class, metaDataMap);
+    }
+
+    public deliveryRecharge_result() {
+    }
+
+    public deliveryRecharge_result(
+      Result success,
+      InvalidOperException ouch)
+    {
+      this();
+      this.success = success;
+      this.ouch = ouch;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public deliveryRecharge_result(deliveryRecharge_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new Result(other.success);
+      }
+      if (other.isSetOuch()) {
+        this.ouch = new InvalidOperException(other.ouch);
+      }
+    }
+
+    public deliveryRecharge_result deepCopy() {
+      return new deliveryRecharge_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.success = null;
+      this.ouch = null;
+    }
+
+    public Result getSuccess() {
+      return this.success;
+    }
+
+    public deliveryRecharge_result setSuccess(Result success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
+    public InvalidOperException getOuch() {
+      return this.ouch;
+    }
+
+    public deliveryRecharge_result setOuch(InvalidOperException ouch) {
+      this.ouch = ouch;
+      return this;
+    }
+
+    public void unsetOuch() {
+      this.ouch = null;
+    }
+
+    /** Returns true if field ouch is set (has been assigned a value) and false otherwise */
+    public boolean isSetOuch() {
+      return this.ouch != null;
+    }
+
+    public void setOuchIsSet(boolean value) {
+      if (!value) {
+        this.ouch = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((Result)value);
+        }
+        break;
+
+      case OUCH:
+        if (value == null) {
+          unsetOuch();
+        } else {
+          setOuch((InvalidOperException)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
+      case OUCH:
+        return getOuch();
+
+      }
+      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 SUCCESS:
+        return isSetSuccess();
+      case OUCH:
+        return isSetOuch();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof deliveryRecharge_result)
+        return this.equals((deliveryRecharge_result)that);
+      return false;
+    }
+
+    public boolean equals(deliveryRecharge_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
+      boolean this_present_ouch = true && this.isSetOuch();
+      boolean that_present_ouch = true && that.isSetOuch();
+      if (this_present_ouch || that_present_ouch) {
+        if (!(this_present_ouch && that_present_ouch))
+          return false;
+        if (!this.ouch.equals(that.ouch))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_success = true && (isSetSuccess());
+      list.add(present_success);
+      if (present_success)
+        list.add(success);
+
+      boolean present_ouch = true && (isSetOuch());
+      list.add(present_ouch);
+      if (present_ouch)
+        list.add(ouch);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(deliveryRecharge_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetOuch()).compareTo(other.isSetOuch());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetOuch()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.ouch, other.ouch);
+        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("deliveryRecharge_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("ouch:");
+      if (this.ouch == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.ouch);
+      }
+      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 (success != null) {
+        success.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, ClassNotFoundException {
+      try {
+        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 deliveryRecharge_resultStandardSchemeFactory implements SchemeFactory {
+      public deliveryRecharge_resultStandardScheme getScheme() {
+        return new deliveryRecharge_resultStandardScheme();
+      }
+    }
+
+    private static class deliveryRecharge_resultStandardScheme extends StandardScheme<deliveryRecharge_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, deliveryRecharge_result 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 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new Result();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 1: // OUCH
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.ouch = new InvalidOperException();
+                struct.ouch.read(iprot);
+                struct.setOuchIsSet(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, deliveryRecharge_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          struct.success.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        if (struct.ouch != null) {
+          oprot.writeFieldBegin(OUCH_FIELD_DESC);
+          struct.ouch.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class deliveryRecharge_resultTupleSchemeFactory implements SchemeFactory {
+      public deliveryRecharge_resultTupleScheme getScheme() {
+        return new deliveryRecharge_resultTupleScheme();
+      }
+    }
+
+    private static class deliveryRecharge_resultTupleScheme extends TupleScheme<deliveryRecharge_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, deliveryRecharge_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        if (struct.isSetOuch()) {
+          optionals.set(1);
+        }
+        oprot.writeBitSet(optionals, 2);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
+        if (struct.isSetOuch()) {
+          struct.ouch.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, deliveryRecharge_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(2);
+        if (incoming.get(0)) {
+          struct.success = new Result();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.ouch = new InvalidOperException();
+          struct.ouch.read(iprot);
+          struct.setOuchIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class getRecharge_args implements org.apache.thrift.TBase<getRecharge_args, getRecharge_args._Fields>, java.io.Serializable, Cloneable, Comparable<getRecharge_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getRecharge_args");
+
+    private static final org.apache.thrift.protocol.TField UID_FIELD_DESC = new org.apache.thrift.protocol.TField("uid", org.apache.thrift.protocol.TType.I32, (short)1);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new getRecharge_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new getRecharge_argsTupleSchemeFactory());
+    }
+
+    public int uid; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      UID((short)1, "uid");
+
+      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: // UID
+            return UID;
+          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 __UID_ISSET_ID = 0;
+    private byte __isset_bitfield = 0;
+    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.UID, new org.apache.thrift.meta_data.FieldMetaData("uid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getRecharge_args.class, metaDataMap);
+    }
+
+    public getRecharge_args() {
+    }
+
+    public getRecharge_args(
+      int uid)
+    {
+      this();
+      this.uid = uid;
+      setUidIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public getRecharge_args(getRecharge_args other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.uid = other.uid;
+    }
+
+    public getRecharge_args deepCopy() {
+      return new getRecharge_args(this);
+    }
+
+    @Override
+    public void clear() {
+      setUidIsSet(false);
+      this.uid = 0;
+    }
+
+    public int getUid() {
+      return this.uid;
+    }
+
+    public getRecharge_args setUid(int uid) {
+      this.uid = uid;
+      setUidIsSet(true);
+      return this;
+    }
+
+    public void unsetUid() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    /** Returns true if field uid is set (has been assigned a value) and false otherwise */
+    public boolean isSetUid() {
+      return EncodingUtils.testBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    public void setUidIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __UID_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case UID:
+        if (value == null) {
+          unsetUid();
+        } else {
+          setUid((Integer)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case UID:
+        return Integer.valueOf(getUid());
+
+      }
+      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 UID:
+        return isSetUid();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof getRecharge_args)
+        return this.equals((getRecharge_args)that);
+      return false;
+    }
+
+    public boolean equals(getRecharge_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_uid = true;
+      boolean that_present_uid = true;
+      if (this_present_uid || that_present_uid) {
+        if (!(this_present_uid && that_present_uid))
+          return false;
+        if (this.uid != that.uid)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_uid = true;
+      list.add(present_uid);
+      if (present_uid)
+        list.add(uid);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(getRecharge_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetUid()).compareTo(other.isSetUid());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUid()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uid, other.uid);
+        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("getRecharge_args(");
+      boolean first = true;
+
+      sb.append("uid:");
+      sb.append(this.uid);
+      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 getRecharge_argsStandardSchemeFactory implements SchemeFactory {
+      public getRecharge_argsStandardScheme getScheme() {
+        return new getRecharge_argsStandardScheme();
+      }
+    }
+
+    private static class getRecharge_argsStandardScheme extends StandardScheme<getRecharge_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getRecharge_args 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: // UID
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.uid = iprot.readI32();
+                struct.setUidIsSet(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, getRecharge_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldBegin(UID_FIELD_DESC);
+        oprot.writeI32(struct.uid);
+        oprot.writeFieldEnd();
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class getRecharge_argsTupleSchemeFactory implements SchemeFactory {
+      public getRecharge_argsTupleScheme getScheme() {
+        return new getRecharge_argsTupleScheme();
+      }
+    }
+
+    private static class getRecharge_argsTupleScheme extends TupleScheme<getRecharge_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, getRecharge_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetUid()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetUid()) {
+          oprot.writeI32(struct.uid);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, getRecharge_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.uid = iprot.readI32();
+          struct.setUidIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class getRecharge_result implements org.apache.thrift.TBase<getRecharge_result, getRecharge_result._Fields>, java.io.Serializable, Cloneable, Comparable<getRecharge_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("getRecharge_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new getRecharge_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new getRecharge_resultTupleSchemeFactory());
+    }
+
+    public RechargeResult success; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success");
+
+      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 0: // SUCCESS
+            return SUCCESS;
+          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
+    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.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, RechargeResult.class)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(getRecharge_result.class, metaDataMap);
+    }
+
+    public getRecharge_result() {
+    }
+
+    public getRecharge_result(
+      RechargeResult success)
+    {
+      this();
+      this.success = success;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public getRecharge_result(getRecharge_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new RechargeResult(other.success);
+      }
+    }
+
+    public getRecharge_result deepCopy() {
+      return new getRecharge_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.success = null;
+    }
+
+    public RechargeResult getSuccess() {
+      return this.success;
+    }
+
+    public getRecharge_result setSuccess(RechargeResult success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((RechargeResult)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
+      }
+      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 SUCCESS:
+        return isSetSuccess();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof getRecharge_result)
+        return this.equals((getRecharge_result)that);
+      return false;
+    }
+
+    public boolean equals(getRecharge_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_success = true && (isSetSuccess());
+      list.add(present_success);
+      if (present_success)
+        list.add(success);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(getRecharge_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        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("getRecharge_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      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 (success != null) {
+        success.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, ClassNotFoundException {
+      try {
+        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 getRecharge_resultStandardSchemeFactory implements SchemeFactory {
+      public getRecharge_resultStandardScheme getScheme() {
+        return new getRecharge_resultStandardScheme();
+      }
+    }
+
+    private static class getRecharge_resultStandardScheme extends StandardScheme<getRecharge_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, getRecharge_result 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 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new RechargeResult();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(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, getRecharge_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          struct.success.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class getRecharge_resultTupleSchemeFactory implements SchemeFactory {
+      public getRecharge_resultTupleScheme getScheme() {
+        return new getRecharge_resultTupleScheme();
+      }
+    }
+
+    private static class getRecharge_resultTupleScheme extends TupleScheme<getRecharge_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, getRecharge_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, getRecharge_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.success = new RechargeResult();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class mathcRoomAdressInfo_args implements org.apache.thrift.TBase<mathcRoomAdressInfo_args, mathcRoomAdressInfo_args._Fields>, java.io.Serializable, Cloneable, Comparable<mathcRoomAdressInfo_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("mathcRoomAdressInfo_args");
+
+    private static final org.apache.thrift.protocol.TField UID_FIELD_DESC = new org.apache.thrift.protocol.TField("uid", org.apache.thrift.protocol.TType.I32, (short)1);
+    private static final org.apache.thrift.protocol.TField TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("type", org.apache.thrift.protocol.TType.I32, (short)2);
+    private static final org.apache.thrift.protocol.TField ADDRESS_FIELD_DESC = new org.apache.thrift.protocol.TField("address", org.apache.thrift.protocol.TType.STRING, (short)3);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new mathcRoomAdressInfo_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new mathcRoomAdressInfo_argsTupleSchemeFactory());
+    }
+
+    public int uid; // required
+    public int type; // required
+    public String address; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      UID((short)1, "uid"),
+      TYPE((short)2, "type"),
+      ADDRESS((short)3, "address");
+
+      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: // UID
+            return UID;
+          case 2: // TYPE
+            return TYPE;
+          case 3: // ADDRESS
+            return ADDRESS;
+          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 __UID_ISSET_ID = 0;
+    private static final int __TYPE_ISSET_ID = 1;
+    private byte __isset_bitfield = 0;
+    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.UID, new org.apache.thrift.meta_data.FieldMetaData("uid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.TYPE, new org.apache.thrift.meta_data.FieldMetaData("type", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.ADDRESS, new org.apache.thrift.meta_data.FieldMetaData("address", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(mathcRoomAdressInfo_args.class, metaDataMap);
+    }
+
+    public mathcRoomAdressInfo_args() {
+    }
+
+    public mathcRoomAdressInfo_args(
+      int uid,
+      int type,
+      String address)
+    {
+      this();
+      this.uid = uid;
+      setUidIsSet(true);
+      this.type = type;
+      setTypeIsSet(true);
+      this.address = address;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public mathcRoomAdressInfo_args(mathcRoomAdressInfo_args other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.uid = other.uid;
+      this.type = other.type;
+      if (other.isSetAddress()) {
+        this.address = other.address;
+      }
+    }
+
+    public mathcRoomAdressInfo_args deepCopy() {
+      return new mathcRoomAdressInfo_args(this);
+    }
+
+    @Override
+    public void clear() {
+      setUidIsSet(false);
+      this.uid = 0;
+      setTypeIsSet(false);
+      this.type = 0;
+      this.address = null;
+    }
+
+    public int getUid() {
+      return this.uid;
+    }
+
+    public mathcRoomAdressInfo_args setUid(int uid) {
+      this.uid = uid;
+      setUidIsSet(true);
+      return this;
+    }
+
+    public void unsetUid() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    /** Returns true if field uid is set (has been assigned a value) and false otherwise */
+    public boolean isSetUid() {
+      return EncodingUtils.testBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    public void setUidIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __UID_ISSET_ID, value);
+    }
+
+    public int getType() {
+      return this.type;
+    }
+
+    public mathcRoomAdressInfo_args setType(int type) {
+      this.type = type;
+      setTypeIsSet(true);
+      return this;
+    }
+
+    public void unsetType() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TYPE_ISSET_ID);
+    }
+
+    /** Returns true if field type is set (has been assigned a value) and false otherwise */
+    public boolean isSetType() {
+      return EncodingUtils.testBit(__isset_bitfield, __TYPE_ISSET_ID);
+    }
+
+    public void setTypeIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TYPE_ISSET_ID, value);
+    }
+
+    public String getAddress() {
+      return this.address;
+    }
+
+    public mathcRoomAdressInfo_args setAddress(String address) {
+      this.address = address;
+      return this;
+    }
+
+    public void unsetAddress() {
+      this.address = null;
+    }
+
+    /** Returns true if field address is set (has been assigned a value) and false otherwise */
+    public boolean isSetAddress() {
+      return this.address != null;
+    }
+
+    public void setAddressIsSet(boolean value) {
+      if (!value) {
+        this.address = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case UID:
+        if (value == null) {
+          unsetUid();
+        } else {
+          setUid((Integer)value);
+        }
+        break;
+
+      case TYPE:
+        if (value == null) {
+          unsetType();
+        } else {
+          setType((Integer)value);
+        }
+        break;
+
+      case ADDRESS:
+        if (value == null) {
+          unsetAddress();
+        } else {
+          setAddress((String)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case UID:
+        return Integer.valueOf(getUid());
+
+      case TYPE:
+        return Integer.valueOf(getType());
+
+      case ADDRESS:
+        return getAddress();
+
+      }
+      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 UID:
+        return isSetUid();
+      case TYPE:
+        return isSetType();
+      case ADDRESS:
+        return isSetAddress();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof mathcRoomAdressInfo_args)
+        return this.equals((mathcRoomAdressInfo_args)that);
+      return false;
+    }
+
+    public boolean equals(mathcRoomAdressInfo_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_uid = true;
+      boolean that_present_uid = true;
+      if (this_present_uid || that_present_uid) {
+        if (!(this_present_uid && that_present_uid))
+          return false;
+        if (this.uid != that.uid)
+          return false;
+      }
+
+      boolean this_present_type = true;
+      boolean that_present_type = true;
+      if (this_present_type || that_present_type) {
+        if (!(this_present_type && that_present_type))
+          return false;
+        if (this.type != that.type)
+          return false;
+      }
+
+      boolean this_present_address = true && this.isSetAddress();
+      boolean that_present_address = true && that.isSetAddress();
+      if (this_present_address || that_present_address) {
+        if (!(this_present_address && that_present_address))
+          return false;
+        if (!this.address.equals(that.address))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_uid = true;
+      list.add(present_uid);
+      if (present_uid)
+        list.add(uid);
+
+      boolean present_type = true;
+      list.add(present_type);
+      if (present_type)
+        list.add(type);
+
+      boolean present_address = true && (isSetAddress());
+      list.add(present_address);
+      if (present_address)
+        list.add(address);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(mathcRoomAdressInfo_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetUid()).compareTo(other.isSetUid());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUid()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uid, other.uid);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetType()).compareTo(other.isSetType());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetType()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.type, other.type);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetAddress()).compareTo(other.isSetAddress());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetAddress()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.address, other.address);
+        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("mathcRoomAdressInfo_args(");
+      boolean first = true;
+
+      sb.append("uid:");
+      sb.append(this.uid);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("type:");
+      sb.append(this.type);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("address:");
+      if (this.address == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.address);
+      }
+      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 mathcRoomAdressInfo_argsStandardSchemeFactory implements SchemeFactory {
+      public mathcRoomAdressInfo_argsStandardScheme getScheme() {
+        return new mathcRoomAdressInfo_argsStandardScheme();
+      }
+    }
+
+    private static class mathcRoomAdressInfo_argsStandardScheme extends StandardScheme<mathcRoomAdressInfo_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, mathcRoomAdressInfo_args 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: // UID
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.uid = iprot.readI32();
+                struct.setUidIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // TYPE
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.type = iprot.readI32();
+                struct.setTypeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 3: // ADDRESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.address = iprot.readString();
+                struct.setAddressIsSet(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, mathcRoomAdressInfo_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldBegin(UID_FIELD_DESC);
+        oprot.writeI32(struct.uid);
+        oprot.writeFieldEnd();
+        oprot.writeFieldBegin(TYPE_FIELD_DESC);
+        oprot.writeI32(struct.type);
+        oprot.writeFieldEnd();
+        if (struct.address != null) {
+          oprot.writeFieldBegin(ADDRESS_FIELD_DESC);
+          oprot.writeString(struct.address);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class mathcRoomAdressInfo_argsTupleSchemeFactory implements SchemeFactory {
+      public mathcRoomAdressInfo_argsTupleScheme getScheme() {
+        return new mathcRoomAdressInfo_argsTupleScheme();
+      }
+    }
+
+    private static class mathcRoomAdressInfo_argsTupleScheme extends TupleScheme<mathcRoomAdressInfo_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, mathcRoomAdressInfo_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetUid()) {
+          optionals.set(0);
+        }
+        if (struct.isSetType()) {
+          optionals.set(1);
+        }
+        if (struct.isSetAddress()) {
+          optionals.set(2);
+        }
+        oprot.writeBitSet(optionals, 3);
+        if (struct.isSetUid()) {
+          oprot.writeI32(struct.uid);
+        }
+        if (struct.isSetType()) {
+          oprot.writeI32(struct.type);
+        }
+        if (struct.isSetAddress()) {
+          oprot.writeString(struct.address);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, mathcRoomAdressInfo_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(3);
+        if (incoming.get(0)) {
+          struct.uid = iprot.readI32();
+          struct.setUidIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.type = iprot.readI32();
+          struct.setTypeIsSet(true);
+        }
+        if (incoming.get(2)) {
+          struct.address = iprot.readString();
+          struct.setAddressIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class mathcRoomAdressInfo_result implements org.apache.thrift.TBase<mathcRoomAdressInfo_result, mathcRoomAdressInfo_result._Fields>, java.io.Serializable, Cloneable, Comparable<mathcRoomAdressInfo_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("mathcRoomAdressInfo_result");
+
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new mathcRoomAdressInfo_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new mathcRoomAdressInfo_resultTupleSchemeFactory());
+    }
+
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+;
+
+      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) {
+          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;
+      }
+    }
+    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);
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(mathcRoomAdressInfo_result.class, metaDataMap);
+    }
+
+    public mathcRoomAdressInfo_result() {
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public mathcRoomAdressInfo_result(mathcRoomAdressInfo_result other) {
+    }
+
+    public mathcRoomAdressInfo_result deepCopy() {
+      return new mathcRoomAdressInfo_result(this);
+    }
+
+    @Override
+    public void clear() {
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      }
+      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) {
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof mathcRoomAdressInfo_result)
+        return this.equals((mathcRoomAdressInfo_result)that);
+      return false;
+    }
+
+    public boolean equals(mathcRoomAdressInfo_result that) {
+      if (that == null)
+        return false;
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(mathcRoomAdressInfo_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      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("mathcRoomAdressInfo_result(");
+      boolean first = true;
+
+      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 {
+        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 mathcRoomAdressInfo_resultStandardSchemeFactory implements SchemeFactory {
+      public mathcRoomAdressInfo_resultStandardScheme getScheme() {
+        return new mathcRoomAdressInfo_resultStandardScheme();
+      }
+    }
+
+    private static class mathcRoomAdressInfo_resultStandardScheme extends StandardScheme<mathcRoomAdressInfo_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, mathcRoomAdressInfo_result 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) {
+            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, mathcRoomAdressInfo_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class mathcRoomAdressInfo_resultTupleSchemeFactory implements SchemeFactory {
+      public mathcRoomAdressInfo_resultTupleScheme getScheme() {
+        return new mathcRoomAdressInfo_resultTupleScheme();
+      }
+    }
+
+    private static class mathcRoomAdressInfo_resultTupleScheme extends TupleScheme<mathcRoomAdressInfo_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, mathcRoomAdressInfo_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, mathcRoomAdressInfo_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+      }
+    }
+
+  }
+
+  public static class sendMailToRole_args implements org.apache.thrift.TBase<sendMailToRole_args, sendMailToRole_args._Fields>, java.io.Serializable, Cloneable, Comparable<sendMailToRole_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("sendMailToRole_args");
+
+    private static final org.apache.thrift.protocol.TField UID_FIELD_DESC = new org.apache.thrift.protocol.TField("uid", org.apache.thrift.protocol.TType.I32, (short)1);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new sendMailToRole_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new sendMailToRole_argsTupleSchemeFactory());
+    }
+
+    public int uid; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      UID((short)1, "uid");
+
+      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: // UID
+            return UID;
+          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 __UID_ISSET_ID = 0;
+    private byte __isset_bitfield = 0;
+    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.UID, new org.apache.thrift.meta_data.FieldMetaData("uid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(sendMailToRole_args.class, metaDataMap);
+    }
+
+    public sendMailToRole_args() {
+    }
+
+    public sendMailToRole_args(
+      int uid)
+    {
+      this();
+      this.uid = uid;
+      setUidIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public sendMailToRole_args(sendMailToRole_args other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.uid = other.uid;
+    }
+
+    public sendMailToRole_args deepCopy() {
+      return new sendMailToRole_args(this);
+    }
+
+    @Override
+    public void clear() {
+      setUidIsSet(false);
+      this.uid = 0;
+    }
+
+    public int getUid() {
+      return this.uid;
+    }
+
+    public sendMailToRole_args setUid(int uid) {
+      this.uid = uid;
+      setUidIsSet(true);
+      return this;
+    }
+
+    public void unsetUid() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    /** Returns true if field uid is set (has been assigned a value) and false otherwise */
+    public boolean isSetUid() {
+      return EncodingUtils.testBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    public void setUidIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __UID_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case UID:
+        if (value == null) {
+          unsetUid();
+        } else {
+          setUid((Integer)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case UID:
+        return Integer.valueOf(getUid());
+
+      }
+      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 UID:
+        return isSetUid();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof sendMailToRole_args)
+        return this.equals((sendMailToRole_args)that);
+      return false;
+    }
+
+    public boolean equals(sendMailToRole_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_uid = true;
+      boolean that_present_uid = true;
+      if (this_present_uid || that_present_uid) {
+        if (!(this_present_uid && that_present_uid))
+          return false;
+        if (this.uid != that.uid)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_uid = true;
+      list.add(present_uid);
+      if (present_uid)
+        list.add(uid);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(sendMailToRole_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetUid()).compareTo(other.isSetUid());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUid()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uid, other.uid);
+        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("sendMailToRole_args(");
+      boolean first = true;
+
+      sb.append("uid:");
+      sb.append(this.uid);
+      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 sendMailToRole_argsStandardSchemeFactory implements SchemeFactory {
+      public sendMailToRole_argsStandardScheme getScheme() {
+        return new sendMailToRole_argsStandardScheme();
+      }
+    }
+
+    private static class sendMailToRole_argsStandardScheme extends StandardScheme<sendMailToRole_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, sendMailToRole_args 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: // UID
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.uid = iprot.readI32();
+                struct.setUidIsSet(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, sendMailToRole_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldBegin(UID_FIELD_DESC);
+        oprot.writeI32(struct.uid);
+        oprot.writeFieldEnd();
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class sendMailToRole_argsTupleSchemeFactory implements SchemeFactory {
+      public sendMailToRole_argsTupleScheme getScheme() {
+        return new sendMailToRole_argsTupleScheme();
+      }
+    }
+
+    private static class sendMailToRole_argsTupleScheme extends TupleScheme<sendMailToRole_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, sendMailToRole_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetUid()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetUid()) {
+          oprot.writeI32(struct.uid);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, sendMailToRole_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.uid = iprot.readI32();
+          struct.setUidIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class sendMailToRole_result implements org.apache.thrift.TBase<sendMailToRole_result, sendMailToRole_result._Fields>, java.io.Serializable, Cloneable, Comparable<sendMailToRole_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("sendMailToRole_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new sendMailToRole_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new sendMailToRole_resultTupleSchemeFactory());
+    }
+
+    public Result success; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success");
+
+      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 0: // SUCCESS
+            return SUCCESS;
+          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
+    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.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Result.class)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(sendMailToRole_result.class, metaDataMap);
+    }
+
+    public sendMailToRole_result() {
+    }
+
+    public sendMailToRole_result(
+      Result success)
+    {
+      this();
+      this.success = success;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public sendMailToRole_result(sendMailToRole_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new Result(other.success);
+      }
+    }
+
+    public sendMailToRole_result deepCopy() {
+      return new sendMailToRole_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.success = null;
+    }
+
+    public Result getSuccess() {
+      return this.success;
+    }
+
+    public sendMailToRole_result setSuccess(Result success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((Result)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
+      }
+      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 SUCCESS:
+        return isSetSuccess();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof sendMailToRole_result)
+        return this.equals((sendMailToRole_result)that);
+      return false;
+    }
+
+    public boolean equals(sendMailToRole_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_success = true && (isSetSuccess());
+      list.add(present_success);
+      if (present_success)
+        list.add(success);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(sendMailToRole_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        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("sendMailToRole_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      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 (success != null) {
+        success.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, ClassNotFoundException {
+      try {
+        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 sendMailToRole_resultStandardSchemeFactory implements SchemeFactory {
+      public sendMailToRole_resultStandardScheme getScheme() {
+        return new sendMailToRole_resultStandardScheme();
+      }
+    }
+
+    private static class sendMailToRole_resultStandardScheme extends StandardScheme<sendMailToRole_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, sendMailToRole_result 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 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new Result();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(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, sendMailToRole_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          struct.success.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class sendMailToRole_resultTupleSchemeFactory implements SchemeFactory {
+      public sendMailToRole_resultTupleScheme getScheme() {
+        return new sendMailToRole_resultTupleScheme();
+      }
+    }
+
+    private static class sendMailToRole_resultTupleScheme extends TupleScheme<sendMailToRole_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, sendMailToRole_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, sendMailToRole_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.success = new Result();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class deliveryCoupon_args implements org.apache.thrift.TBase<deliveryCoupon_args, deliveryCoupon_args._Fields>, java.io.Serializable, Cloneable, Comparable<deliveryCoupon_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("deliveryCoupon_args");
+
+    private static final org.apache.thrift.protocol.TField GAME_USER_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gameUserId", org.apache.thrift.protocol.TType.I32, (short)1);
+    private static final org.apache.thrift.protocol.TField COUPON_CODE_FIELD_DESC = new org.apache.thrift.protocol.TField("couponCode", org.apache.thrift.protocol.TType.STRING, (short)2);
+    private static final org.apache.thrift.protocol.TField TITLE_FIELD_DESC = new org.apache.thrift.protocol.TField("title", org.apache.thrift.protocol.TType.STRING, (short)3);
+    private static final org.apache.thrift.protocol.TField CONTENT_FIELD_DESC = new org.apache.thrift.protocol.TField("content", org.apache.thrift.protocol.TType.STRING, (short)4);
+    private static final org.apache.thrift.protocol.TField ORDER_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("orderTime", org.apache.thrift.protocol.TType.I64, (short)5);
+    private static final org.apache.thrift.protocol.TField ITEM_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("itemId", org.apache.thrift.protocol.TType.LIST, (short)6);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new deliveryCoupon_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new deliveryCoupon_argsTupleSchemeFactory());
+    }
+
+    public int gameUserId; // required
+    public String couponCode; // required
+    public String title; // required
+    public String content; // required
+    public long orderTime; // required
+    public List<itemData> itemId; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      GAME_USER_ID((short)1, "gameUserId"),
+      COUPON_CODE((short)2, "couponCode"),
+      TITLE((short)3, "title"),
+      CONTENT((short)4, "content"),
+      ORDER_TIME((short)5, "orderTime"),
+      ITEM_ID((short)6, "itemId");
+
+      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: // GAME_USER_ID
+            return GAME_USER_ID;
+          case 2: // COUPON_CODE
+            return COUPON_CODE;
+          case 3: // TITLE
+            return TITLE;
+          case 4: // CONTENT
+            return CONTENT;
+          case 5: // ORDER_TIME
+            return ORDER_TIME;
+          case 6: // ITEM_ID
+            return ITEM_ID;
+          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 __GAMEUSERID_ISSET_ID = 0;
+    private static final int __ORDERTIME_ISSET_ID = 1;
+    private byte __isset_bitfield = 0;
+    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.GAME_USER_ID, new org.apache.thrift.meta_data.FieldMetaData("gameUserId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.COUPON_CODE, new org.apache.thrift.meta_data.FieldMetaData("couponCode", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.TITLE, new org.apache.thrift.meta_data.FieldMetaData("title", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.CONTENT, new org.apache.thrift.meta_data.FieldMetaData("content", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.ORDER_TIME, new org.apache.thrift.meta_data.FieldMetaData("orderTime", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+      tmpMap.put(_Fields.ITEM_ID, new org.apache.thrift.meta_data.FieldMetaData("itemId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+              new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, itemData.class))));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(deliveryCoupon_args.class, metaDataMap);
+    }
+
+    public deliveryCoupon_args() {
+    }
+
+    public deliveryCoupon_args(
+      int gameUserId,
+      String couponCode,
+      String title,
+      String content,
+      long orderTime,
+      List<itemData> itemId)
+    {
+      this();
+      this.gameUserId = gameUserId;
+      setGameUserIdIsSet(true);
+      this.couponCode = couponCode;
+      this.title = title;
+      this.content = content;
+      this.orderTime = orderTime;
+      setOrderTimeIsSet(true);
+      this.itemId = itemId;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public deliveryCoupon_args(deliveryCoupon_args other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.gameUserId = other.gameUserId;
+      if (other.isSetCouponCode()) {
+        this.couponCode = other.couponCode;
+      }
+      if (other.isSetTitle()) {
+        this.title = other.title;
+      }
+      if (other.isSetContent()) {
+        this.content = other.content;
+      }
+      this.orderTime = other.orderTime;
+      if (other.isSetItemId()) {
+        List<itemData> __this__itemId = new ArrayList<itemData>(other.itemId.size());
+        for (itemData other_element : other.itemId) {
+          __this__itemId.add(new itemData(other_element));
+        }
+        this.itemId = __this__itemId;
+      }
+    }
+
+    public deliveryCoupon_args deepCopy() {
+      return new deliveryCoupon_args(this);
+    }
+
+    @Override
+    public void clear() {
+      setGameUserIdIsSet(false);
+      this.gameUserId = 0;
+      this.couponCode = null;
+      this.title = null;
+      this.content = null;
+      setOrderTimeIsSet(false);
+      this.orderTime = 0;
+      this.itemId = null;
+    }
+
+    public int getGameUserId() {
+      return this.gameUserId;
+    }
+
+    public deliveryCoupon_args setGameUserId(int gameUserId) {
+      this.gameUserId = gameUserId;
+      setGameUserIdIsSet(true);
+      return this;
+    }
+
+    public void unsetGameUserId() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __GAMEUSERID_ISSET_ID);
+    }
+
+    /** Returns true if field gameUserId is set (has been assigned a value) and false otherwise */
+    public boolean isSetGameUserId() {
+      return EncodingUtils.testBit(__isset_bitfield, __GAMEUSERID_ISSET_ID);
+    }
+
+    public void setGameUserIdIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __GAMEUSERID_ISSET_ID, value);
+    }
+
+    public String getCouponCode() {
+      return this.couponCode;
+    }
+
+    public deliveryCoupon_args setCouponCode(String couponCode) {
+      this.couponCode = couponCode;
+      return this;
+    }
+
+    public void unsetCouponCode() {
+      this.couponCode = null;
+    }
+
+    /** Returns true if field couponCode is set (has been assigned a value) and false otherwise */
+    public boolean isSetCouponCode() {
+      return this.couponCode != null;
+    }
+
+    public void setCouponCodeIsSet(boolean value) {
+      if (!value) {
+        this.couponCode = null;
+      }
+    }
+
+    public String getTitle() {
+      return this.title;
+    }
+
+    public deliveryCoupon_args setTitle(String title) {
+      this.title = title;
+      return this;
+    }
+
+    public void unsetTitle() {
+      this.title = null;
+    }
+
+    /** Returns true if field title is set (has been assigned a value) and false otherwise */
+    public boolean isSetTitle() {
+      return this.title != null;
+    }
+
+    public void setTitleIsSet(boolean value) {
+      if (!value) {
+        this.title = null;
+      }
+    }
+
+    public String getContent() {
+      return this.content;
+    }
+
+    public deliveryCoupon_args setContent(String content) {
+      this.content = content;
+      return this;
+    }
+
+    public void unsetContent() {
+      this.content = null;
+    }
+
+    /** Returns true if field content is set (has been assigned a value) and false otherwise */
+    public boolean isSetContent() {
+      return this.content != null;
+    }
+
+    public void setContentIsSet(boolean value) {
+      if (!value) {
+        this.content = null;
+      }
+    }
+
+    public long getOrderTime() {
+      return this.orderTime;
+    }
+
+    public deliveryCoupon_args setOrderTime(long orderTime) {
+      this.orderTime = orderTime;
+      setOrderTimeIsSet(true);
+      return this;
+    }
+
+    public void unsetOrderTime() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ORDERTIME_ISSET_ID);
+    }
+
+    /** Returns true if field orderTime is set (has been assigned a value) and false otherwise */
+    public boolean isSetOrderTime() {
+      return EncodingUtils.testBit(__isset_bitfield, __ORDERTIME_ISSET_ID);
+    }
+
+    public void setOrderTimeIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ORDERTIME_ISSET_ID, value);
+    }
+
+    public int getItemIdSize() {
+      return (this.itemId == null) ? 0 : this.itemId.size();
+    }
+
+    public java.util.Iterator<itemData> getItemIdIterator() {
+      return (this.itemId == null) ? null : this.itemId.iterator();
+    }
+
+    public void addToItemId(itemData elem) {
+      if (this.itemId == null) {
+        this.itemId = new ArrayList<itemData>();
+      }
+      this.itemId.add(elem);
+    }
+
+    public List<itemData> getItemId() {
+      return this.itemId;
+    }
+
+    public deliveryCoupon_args setItemId(List<itemData> itemId) {
+      this.itemId = itemId;
+      return this;
+    }
+
+    public void unsetItemId() {
+      this.itemId = null;
+    }
+
+    /** Returns true if field itemId is set (has been assigned a value) and false otherwise */
+    public boolean isSetItemId() {
+      return this.itemId != null;
+    }
+
+    public void setItemIdIsSet(boolean value) {
+      if (!value) {
+        this.itemId = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case GAME_USER_ID:
+        if (value == null) {
+          unsetGameUserId();
+        } else {
+          setGameUserId((Integer)value);
+        }
+        break;
+
+      case COUPON_CODE:
+        if (value == null) {
+          unsetCouponCode();
+        } else {
+          setCouponCode((String)value);
+        }
+        break;
+
+      case TITLE:
+        if (value == null) {
+          unsetTitle();
+        } else {
+          setTitle((String)value);
+        }
+        break;
+
+      case CONTENT:
+        if (value == null) {
+          unsetContent();
+        } else {
+          setContent((String)value);
+        }
+        break;
+
+      case ORDER_TIME:
+        if (value == null) {
+          unsetOrderTime();
+        } else {
+          setOrderTime((Long)value);
+        }
+        break;
+
+      case ITEM_ID:
+        if (value == null) {
+          unsetItemId();
+        } else {
+          setItemId((List<itemData>)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case GAME_USER_ID:
+        return Integer.valueOf(getGameUserId());
+
+      case COUPON_CODE:
+        return getCouponCode();
+
+      case TITLE:
+        return getTitle();
+
+      case CONTENT:
+        return getContent();
+
+      case ORDER_TIME:
+        return Long.valueOf(getOrderTime());
+
+      case ITEM_ID:
+        return getItemId();
+
+      }
+      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 GAME_USER_ID:
+        return isSetGameUserId();
+      case COUPON_CODE:
+        return isSetCouponCode();
+      case TITLE:
+        return isSetTitle();
+      case CONTENT:
+        return isSetContent();
+      case ORDER_TIME:
+        return isSetOrderTime();
+      case ITEM_ID:
+        return isSetItemId();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof deliveryCoupon_args)
+        return this.equals((deliveryCoupon_args)that);
+      return false;
+    }
+
+    public boolean equals(deliveryCoupon_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_gameUserId = true;
+      boolean that_present_gameUserId = true;
+      if (this_present_gameUserId || that_present_gameUserId) {
+        if (!(this_present_gameUserId && that_present_gameUserId))
+          return false;
+        if (this.gameUserId != that.gameUserId)
+          return false;
+      }
+
+      boolean this_present_couponCode = true && this.isSetCouponCode();
+      boolean that_present_couponCode = true && that.isSetCouponCode();
+      if (this_present_couponCode || that_present_couponCode) {
+        if (!(this_present_couponCode && that_present_couponCode))
+          return false;
+        if (!this.couponCode.equals(that.couponCode))
+          return false;
+      }
+
+      boolean this_present_title = true && this.isSetTitle();
+      boolean that_present_title = true && that.isSetTitle();
+      if (this_present_title || that_present_title) {
+        if (!(this_present_title && that_present_title))
+          return false;
+        if (!this.title.equals(that.title))
+          return false;
+      }
+
+      boolean this_present_content = true && this.isSetContent();
+      boolean that_present_content = true && that.isSetContent();
+      if (this_present_content || that_present_content) {
+        if (!(this_present_content && that_present_content))
+          return false;
+        if (!this.content.equals(that.content))
+          return false;
+      }
+
+      boolean this_present_orderTime = true;
+      boolean that_present_orderTime = true;
+      if (this_present_orderTime || that_present_orderTime) {
+        if (!(this_present_orderTime && that_present_orderTime))
+          return false;
+        if (this.orderTime != that.orderTime)
+          return false;
+      }
+
+      boolean this_present_itemId = true && this.isSetItemId();
+      boolean that_present_itemId = true && that.isSetItemId();
+      if (this_present_itemId || that_present_itemId) {
+        if (!(this_present_itemId && that_present_itemId))
+          return false;
+        if (!this.itemId.equals(that.itemId))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_gameUserId = true;
+      list.add(present_gameUserId);
+      if (present_gameUserId)
+        list.add(gameUserId);
+
+      boolean present_couponCode = true && (isSetCouponCode());
+      list.add(present_couponCode);
+      if (present_couponCode)
+        list.add(couponCode);
+
+      boolean present_title = true && (isSetTitle());
+      list.add(present_title);
+      if (present_title)
+        list.add(title);
+
+      boolean present_content = true && (isSetContent());
+      list.add(present_content);
+      if (present_content)
+        list.add(content);
+
+      boolean present_orderTime = true;
+      list.add(present_orderTime);
+      if (present_orderTime)
+        list.add(orderTime);
+
+      boolean present_itemId = true && (isSetItemId());
+      list.add(present_itemId);
+      if (present_itemId)
+        list.add(itemId);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(deliveryCoupon_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetGameUserId()).compareTo(other.isSetGameUserId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetGameUserId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.gameUserId, other.gameUserId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetCouponCode()).compareTo(other.isSetCouponCode());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetCouponCode()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.couponCode, other.couponCode);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetTitle()).compareTo(other.isSetTitle());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetTitle()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.title, other.title);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetContent()).compareTo(other.isSetContent());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetContent()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.content, other.content);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetOrderTime()).compareTo(other.isSetOrderTime());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetOrderTime()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.orderTime, other.orderTime);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetItemId()).compareTo(other.isSetItemId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetItemId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.itemId, other.itemId);
+        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("deliveryCoupon_args(");
+      boolean first = true;
+
+      sb.append("gameUserId:");
+      sb.append(this.gameUserId);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("couponCode:");
+      if (this.couponCode == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.couponCode);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("title:");
+      if (this.title == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.title);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("content:");
+      if (this.content == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.content);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("orderTime:");
+      sb.append(this.orderTime);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("itemId:");
+      if (this.itemId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.itemId);
+      }
+      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 deliveryCoupon_argsStandardSchemeFactory implements SchemeFactory {
+      public deliveryCoupon_argsStandardScheme getScheme() {
+        return new deliveryCoupon_argsStandardScheme();
+      }
+    }
+
+    private static class deliveryCoupon_argsStandardScheme extends StandardScheme<deliveryCoupon_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, deliveryCoupon_args 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: // GAME_USER_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.gameUserId = iprot.readI32();
+                struct.setGameUserIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // COUPON_CODE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.couponCode = iprot.readString();
+                struct.setCouponCodeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 3: // TITLE
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.title = iprot.readString();
+                struct.setTitleIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 4: // CONTENT
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.content = iprot.readString();
+                struct.setContentIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 5: // ORDER_TIME
+              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+                struct.orderTime = iprot.readI64();
+                struct.setOrderTimeIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 6: // ITEM_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+                {
+                  org.apache.thrift.protocol.TList _list8 = iprot.readListBegin();
+                  struct.itemId = new ArrayList<itemData>(_list8.size);
+                  itemData _elem9;
+                  for (int _i10 = 0; _i10 < _list8.size; ++_i10)
+                  {
+                    _elem9 = new itemData();
+                    _elem9.read(iprot);
+                    struct.itemId.add(_elem9);
+                  }
+                  iprot.readListEnd();
+                }
+                struct.setItemIdIsSet(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, deliveryCoupon_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldBegin(GAME_USER_ID_FIELD_DESC);
+        oprot.writeI32(struct.gameUserId);
+        oprot.writeFieldEnd();
+        if (struct.couponCode != null) {
+          oprot.writeFieldBegin(COUPON_CODE_FIELD_DESC);
+          oprot.writeString(struct.couponCode);
+          oprot.writeFieldEnd();
+        }
+        if (struct.title != null) {
+          oprot.writeFieldBegin(TITLE_FIELD_DESC);
+          oprot.writeString(struct.title);
+          oprot.writeFieldEnd();
+        }
+        if (struct.content != null) {
+          oprot.writeFieldBegin(CONTENT_FIELD_DESC);
+          oprot.writeString(struct.content);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldBegin(ORDER_TIME_FIELD_DESC);
+        oprot.writeI64(struct.orderTime);
+        oprot.writeFieldEnd();
+        if (struct.itemId != null) {
+          oprot.writeFieldBegin(ITEM_ID_FIELD_DESC);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.itemId.size()));
+            for (itemData _iter11 : struct.itemId)
+            {
+              _iter11.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class deliveryCoupon_argsTupleSchemeFactory implements SchemeFactory {
+      public deliveryCoupon_argsTupleScheme getScheme() {
+        return new deliveryCoupon_argsTupleScheme();
+      }
+    }
+
+    private static class deliveryCoupon_argsTupleScheme extends TupleScheme<deliveryCoupon_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, deliveryCoupon_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetGameUserId()) {
+          optionals.set(0);
+        }
+        if (struct.isSetCouponCode()) {
+          optionals.set(1);
+        }
+        if (struct.isSetTitle()) {
+          optionals.set(2);
+        }
+        if (struct.isSetContent()) {
+          optionals.set(3);
+        }
+        if (struct.isSetOrderTime()) {
+          optionals.set(4);
+        }
+        if (struct.isSetItemId()) {
+          optionals.set(5);
+        }
+        oprot.writeBitSet(optionals, 6);
+        if (struct.isSetGameUserId()) {
+          oprot.writeI32(struct.gameUserId);
+        }
+        if (struct.isSetCouponCode()) {
+          oprot.writeString(struct.couponCode);
+        }
+        if (struct.isSetTitle()) {
+          oprot.writeString(struct.title);
+        }
+        if (struct.isSetContent()) {
+          oprot.writeString(struct.content);
+        }
+        if (struct.isSetOrderTime()) {
+          oprot.writeI64(struct.orderTime);
+        }
+        if (struct.isSetItemId()) {
+          {
+            oprot.writeI32(struct.itemId.size());
+            for (itemData _iter12 : struct.itemId)
+            {
+              _iter12.write(oprot);
+            }
+          }
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, deliveryCoupon_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(6);
+        if (incoming.get(0)) {
+          struct.gameUserId = iprot.readI32();
+          struct.setGameUserIdIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.couponCode = iprot.readString();
+          struct.setCouponCodeIsSet(true);
+        }
+        if (incoming.get(2)) {
+          struct.title = iprot.readString();
+          struct.setTitleIsSet(true);
+        }
+        if (incoming.get(3)) {
+          struct.content = iprot.readString();
+          struct.setContentIsSet(true);
+        }
+        if (incoming.get(4)) {
+          struct.orderTime = iprot.readI64();
+          struct.setOrderTimeIsSet(true);
+        }
+        if (incoming.get(5)) {
+          {
+            org.apache.thrift.protocol.TList _list13 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+            struct.itemId = new ArrayList<itemData>(_list13.size);
+            itemData _elem14;
+            for (int _i15 = 0; _i15 < _list13.size; ++_i15)
+            {
+              _elem14 = new itemData();
+              _elem14.read(iprot);
+              struct.itemId.add(_elem14);
+            }
+          }
+          struct.setItemIdIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class deliveryCoupon_result implements org.apache.thrift.TBase<deliveryCoupon_result, deliveryCoupon_result._Fields>, java.io.Serializable, Cloneable, Comparable<deliveryCoupon_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("deliveryCoupon_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new deliveryCoupon_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new deliveryCoupon_resultTupleSchemeFactory());
+    }
+
+    public Result success; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success");
+
+      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 0: // SUCCESS
+            return SUCCESS;
+          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
+    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.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Result.class)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(deliveryCoupon_result.class, metaDataMap);
+    }
+
+    public deliveryCoupon_result() {
+    }
+
+    public deliveryCoupon_result(
+      Result success)
+    {
+      this();
+      this.success = success;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public deliveryCoupon_result(deliveryCoupon_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new Result(other.success);
+      }
+    }
+
+    public deliveryCoupon_result deepCopy() {
+      return new deliveryCoupon_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.success = null;
+    }
+
+    public Result getSuccess() {
+      return this.success;
+    }
+
+    public deliveryCoupon_result setSuccess(Result success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((Result)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
+      }
+      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 SUCCESS:
+        return isSetSuccess();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof deliveryCoupon_result)
+        return this.equals((deliveryCoupon_result)that);
+      return false;
+    }
+
+    public boolean equals(deliveryCoupon_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_success = true && (isSetSuccess());
+      list.add(present_success);
+      if (present_success)
+        list.add(success);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(deliveryCoupon_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        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("deliveryCoupon_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      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 (success != null) {
+        success.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, ClassNotFoundException {
+      try {
+        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 deliveryCoupon_resultStandardSchemeFactory implements SchemeFactory {
+      public deliveryCoupon_resultStandardScheme getScheme() {
+        return new deliveryCoupon_resultStandardScheme();
+      }
+    }
+
+    private static class deliveryCoupon_resultStandardScheme extends StandardScheme<deliveryCoupon_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, deliveryCoupon_result 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 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new Result();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(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, deliveryCoupon_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          struct.success.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class deliveryCoupon_resultTupleSchemeFactory implements SchemeFactory {
+      public deliveryCoupon_resultTupleScheme getScheme() {
+        return new deliveryCoupon_resultTupleScheme();
+      }
+    }
+
+    private static class deliveryCoupon_resultTupleScheme extends TupleScheme<deliveryCoupon_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, deliveryCoupon_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, deliveryCoupon_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.success = new Result();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class deliveryOrder_args implements org.apache.thrift.TBase<deliveryOrder_args, deliveryOrder_args._Fields>, java.io.Serializable, Cloneable, Comparable<deliveryOrder_args>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("deliveryOrder_args");
+
+    private static final org.apache.thrift.protocol.TField UID_FIELD_DESC = new org.apache.thrift.protocol.TField("uid", org.apache.thrift.protocol.TType.I32, (short)1);
+    private static final org.apache.thrift.protocol.TField GOODS_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("goodsId", org.apache.thrift.protocol.TType.STRING, (short)2);
+    private static final org.apache.thrift.protocol.TField ORDER_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("orderTime", org.apache.thrift.protocol.TType.I64, (short)3);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new deliveryOrder_argsStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new deliveryOrder_argsTupleSchemeFactory());
+    }
+
+    public int uid; // required
+    public String goodsId; // required
+    public long orderTime; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      UID((short)1, "uid"),
+      GOODS_ID((short)2, "goodsId"),
+      ORDER_TIME((short)3, "orderTime");
+
+      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: // UID
+            return UID;
+          case 2: // GOODS_ID
+            return GOODS_ID;
+          case 3: // ORDER_TIME
+            return ORDER_TIME;
+          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 __UID_ISSET_ID = 0;
+    private static final int __ORDERTIME_ISSET_ID = 1;
+    private byte __isset_bitfield = 0;
+    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.UID, new org.apache.thrift.meta_data.FieldMetaData("uid", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+      tmpMap.put(_Fields.GOODS_ID, new org.apache.thrift.meta_data.FieldMetaData("goodsId", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+      tmpMap.put(_Fields.ORDER_TIME, new org.apache.thrift.meta_data.FieldMetaData("orderTime", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(deliveryOrder_args.class, metaDataMap);
+    }
+
+    public deliveryOrder_args() {
+    }
+
+    public deliveryOrder_args(
+      int uid,
+      String goodsId,
+      long orderTime)
+    {
+      this();
+      this.uid = uid;
+      setUidIsSet(true);
+      this.goodsId = goodsId;
+      this.orderTime = orderTime;
+      setOrderTimeIsSet(true);
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public deliveryOrder_args(deliveryOrder_args other) {
+      __isset_bitfield = other.__isset_bitfield;
+      this.uid = other.uid;
+      if (other.isSetGoodsId()) {
+        this.goodsId = other.goodsId;
+      }
+      this.orderTime = other.orderTime;
+    }
+
+    public deliveryOrder_args deepCopy() {
+      return new deliveryOrder_args(this);
+    }
+
+    @Override
+    public void clear() {
+      setUidIsSet(false);
+      this.uid = 0;
+      this.goodsId = null;
+      setOrderTimeIsSet(false);
+      this.orderTime = 0;
+    }
+
+    public int getUid() {
+      return this.uid;
+    }
+
+    public deliveryOrder_args setUid(int uid) {
+      this.uid = uid;
+      setUidIsSet(true);
+      return this;
+    }
+
+    public void unsetUid() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    /** Returns true if field uid is set (has been assigned a value) and false otherwise */
+    public boolean isSetUid() {
+      return EncodingUtils.testBit(__isset_bitfield, __UID_ISSET_ID);
+    }
+
+    public void setUidIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __UID_ISSET_ID, value);
+    }
+
+    public String getGoodsId() {
+      return this.goodsId;
+    }
+
+    public deliveryOrder_args setGoodsId(String goodsId) {
+      this.goodsId = goodsId;
+      return this;
+    }
+
+    public void unsetGoodsId() {
+      this.goodsId = null;
+    }
+
+    /** Returns true if field goodsId is set (has been assigned a value) and false otherwise */
+    public boolean isSetGoodsId() {
+      return this.goodsId != null;
+    }
+
+    public void setGoodsIdIsSet(boolean value) {
+      if (!value) {
+        this.goodsId = null;
+      }
+    }
+
+    public long getOrderTime() {
+      return this.orderTime;
+    }
+
+    public deliveryOrder_args setOrderTime(long orderTime) {
+      this.orderTime = orderTime;
+      setOrderTimeIsSet(true);
+      return this;
+    }
+
+    public void unsetOrderTime() {
+      __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ORDERTIME_ISSET_ID);
+    }
+
+    /** Returns true if field orderTime is set (has been assigned a value) and false otherwise */
+    public boolean isSetOrderTime() {
+      return EncodingUtils.testBit(__isset_bitfield, __ORDERTIME_ISSET_ID);
+    }
+
+    public void setOrderTimeIsSet(boolean value) {
+      __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ORDERTIME_ISSET_ID, value);
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case UID:
+        if (value == null) {
+          unsetUid();
+        } else {
+          setUid((Integer)value);
+        }
+        break;
+
+      case GOODS_ID:
+        if (value == null) {
+          unsetGoodsId();
+        } else {
+          setGoodsId((String)value);
+        }
+        break;
+
+      case ORDER_TIME:
+        if (value == null) {
+          unsetOrderTime();
+        } else {
+          setOrderTime((Long)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case UID:
+        return Integer.valueOf(getUid());
+
+      case GOODS_ID:
+        return getGoodsId();
+
+      case ORDER_TIME:
+        return Long.valueOf(getOrderTime());
+
+      }
+      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 UID:
+        return isSetUid();
+      case GOODS_ID:
+        return isSetGoodsId();
+      case ORDER_TIME:
+        return isSetOrderTime();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof deliveryOrder_args)
+        return this.equals((deliveryOrder_args)that);
+      return false;
+    }
+
+    public boolean equals(deliveryOrder_args that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_uid = true;
+      boolean that_present_uid = true;
+      if (this_present_uid || that_present_uid) {
+        if (!(this_present_uid && that_present_uid))
+          return false;
+        if (this.uid != that.uid)
+          return false;
+      }
+
+      boolean this_present_goodsId = true && this.isSetGoodsId();
+      boolean that_present_goodsId = true && that.isSetGoodsId();
+      if (this_present_goodsId || that_present_goodsId) {
+        if (!(this_present_goodsId && that_present_goodsId))
+          return false;
+        if (!this.goodsId.equals(that.goodsId))
+          return false;
+      }
+
+      boolean this_present_orderTime = true;
+      boolean that_present_orderTime = true;
+      if (this_present_orderTime || that_present_orderTime) {
+        if (!(this_present_orderTime && that_present_orderTime))
+          return false;
+        if (this.orderTime != that.orderTime)
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_uid = true;
+      list.add(present_uid);
+      if (present_uid)
+        list.add(uid);
+
+      boolean present_goodsId = true && (isSetGoodsId());
+      list.add(present_goodsId);
+      if (present_goodsId)
+        list.add(goodsId);
+
+      boolean present_orderTime = true;
+      list.add(present_orderTime);
+      if (present_orderTime)
+        list.add(orderTime);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(deliveryOrder_args other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetUid()).compareTo(other.isSetUid());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetUid()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.uid, other.uid);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetGoodsId()).compareTo(other.isSetGoodsId());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetGoodsId()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.goodsId, other.goodsId);
+        if (lastComparison != 0) {
+          return lastComparison;
+        }
+      }
+      lastComparison = Boolean.valueOf(isSetOrderTime()).compareTo(other.isSetOrderTime());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetOrderTime()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.orderTime, other.orderTime);
+        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("deliveryOrder_args(");
+      boolean first = true;
+
+      sb.append("uid:");
+      sb.append(this.uid);
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("goodsId:");
+      if (this.goodsId == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.goodsId);
+      }
+      first = false;
+      if (!first) sb.append(", ");
+      sb.append("orderTime:");
+      sb.append(this.orderTime);
+      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 deliveryOrder_argsStandardSchemeFactory implements SchemeFactory {
+      public deliveryOrder_argsStandardScheme getScheme() {
+        return new deliveryOrder_argsStandardScheme();
+      }
+    }
+
+    private static class deliveryOrder_argsStandardScheme extends StandardScheme<deliveryOrder_args> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, deliveryOrder_args 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: // UID
+              if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+                struct.uid = iprot.readI32();
+                struct.setUidIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 2: // GOODS_ID
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+                struct.goodsId = iprot.readString();
+                struct.setGoodsIdIsSet(true);
+              } else { 
+                org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+              }
+              break;
+            case 3: // ORDER_TIME
+              if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
+                struct.orderTime = iprot.readI64();
+                struct.setOrderTimeIsSet(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, deliveryOrder_args struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        oprot.writeFieldBegin(UID_FIELD_DESC);
+        oprot.writeI32(struct.uid);
+        oprot.writeFieldEnd();
+        if (struct.goodsId != null) {
+          oprot.writeFieldBegin(GOODS_ID_FIELD_DESC);
+          oprot.writeString(struct.goodsId);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldBegin(ORDER_TIME_FIELD_DESC);
+        oprot.writeI64(struct.orderTime);
+        oprot.writeFieldEnd();
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class deliveryOrder_argsTupleSchemeFactory implements SchemeFactory {
+      public deliveryOrder_argsTupleScheme getScheme() {
+        return new deliveryOrder_argsTupleScheme();
+      }
+    }
+
+    private static class deliveryOrder_argsTupleScheme extends TupleScheme<deliveryOrder_args> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, deliveryOrder_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetUid()) {
+          optionals.set(0);
+        }
+        if (struct.isSetGoodsId()) {
+          optionals.set(1);
+        }
+        if (struct.isSetOrderTime()) {
+          optionals.set(2);
+        }
+        oprot.writeBitSet(optionals, 3);
+        if (struct.isSetUid()) {
+          oprot.writeI32(struct.uid);
+        }
+        if (struct.isSetGoodsId()) {
+          oprot.writeString(struct.goodsId);
+        }
+        if (struct.isSetOrderTime()) {
+          oprot.writeI64(struct.orderTime);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, deliveryOrder_args struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(3);
+        if (incoming.get(0)) {
+          struct.uid = iprot.readI32();
+          struct.setUidIsSet(true);
+        }
+        if (incoming.get(1)) {
+          struct.goodsId = iprot.readString();
+          struct.setGoodsIdIsSet(true);
+        }
+        if (incoming.get(2)) {
+          struct.orderTime = iprot.readI64();
+          struct.setOrderTimeIsSet(true);
+        }
+      }
+    }
+
+  }
+
+  public static class deliveryOrder_result implements org.apache.thrift.TBase<deliveryOrder_result, deliveryOrder_result._Fields>, java.io.Serializable, Cloneable, Comparable<deliveryOrder_result>   {
+    private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("deliveryOrder_result");
+
+    private static final org.apache.thrift.protocol.TField SUCCESS_FIELD_DESC = new org.apache.thrift.protocol.TField("success", org.apache.thrift.protocol.TType.STRUCT, (short)0);
+
+    private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+    static {
+      schemes.put(StandardScheme.class, new deliveryOrder_resultStandardSchemeFactory());
+      schemes.put(TupleScheme.class, new deliveryOrder_resultTupleSchemeFactory());
+    }
+
+    public Result success; // required
+
+    /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
+    public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+      SUCCESS((short)0, "success");
+
+      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 0: // SUCCESS
+            return SUCCESS;
+          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
+    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.SUCCESS, new org.apache.thrift.meta_data.FieldMetaData("success", org.apache.thrift.TFieldRequirementType.DEFAULT, 
+          new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, Result.class)));
+      metaDataMap = Collections.unmodifiableMap(tmpMap);
+      org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(deliveryOrder_result.class, metaDataMap);
+    }
+
+    public deliveryOrder_result() {
+    }
+
+    public deliveryOrder_result(
+      Result success)
+    {
+      this();
+      this.success = success;
+    }
+
+    /**
+     * Performs a deep copy on <i>other</i>.
+     */
+    public deliveryOrder_result(deliveryOrder_result other) {
+      if (other.isSetSuccess()) {
+        this.success = new Result(other.success);
+      }
+    }
+
+    public deliveryOrder_result deepCopy() {
+      return new deliveryOrder_result(this);
+    }
+
+    @Override
+    public void clear() {
+      this.success = null;
+    }
+
+    public Result getSuccess() {
+      return this.success;
+    }
+
+    public deliveryOrder_result setSuccess(Result success) {
+      this.success = success;
+      return this;
+    }
+
+    public void unsetSuccess() {
+      this.success = null;
+    }
+
+    /** Returns true if field success is set (has been assigned a value) and false otherwise */
+    public boolean isSetSuccess() {
+      return this.success != null;
+    }
+
+    public void setSuccessIsSet(boolean value) {
+      if (!value) {
+        this.success = null;
+      }
+    }
+
+    public void setFieldValue(_Fields field, Object value) {
+      switch (field) {
+      case SUCCESS:
+        if (value == null) {
+          unsetSuccess();
+        } else {
+          setSuccess((Result)value);
+        }
+        break;
+
+      }
+    }
+
+    public Object getFieldValue(_Fields field) {
+      switch (field) {
+      case SUCCESS:
+        return getSuccess();
+
+      }
+      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 SUCCESS:
+        return isSetSuccess();
+      }
+      throw new IllegalStateException();
+    }
+
+    @Override
+    public boolean equals(Object that) {
+      if (that == null)
+        return false;
+      if (that instanceof deliveryOrder_result)
+        return this.equals((deliveryOrder_result)that);
+      return false;
+    }
+
+    public boolean equals(deliveryOrder_result that) {
+      if (that == null)
+        return false;
+
+      boolean this_present_success = true && this.isSetSuccess();
+      boolean that_present_success = true && that.isSetSuccess();
+      if (this_present_success || that_present_success) {
+        if (!(this_present_success && that_present_success))
+          return false;
+        if (!this.success.equals(that.success))
+          return false;
+      }
+
+      return true;
+    }
+
+    @Override
+    public int hashCode() {
+      List<Object> list = new ArrayList<Object>();
+
+      boolean present_success = true && (isSetSuccess());
+      list.add(present_success);
+      if (present_success)
+        list.add(success);
+
+      return list.hashCode();
+    }
+
+    @Override
+    public int compareTo(deliveryOrder_result other) {
+      if (!getClass().equals(other.getClass())) {
+        return getClass().getName().compareTo(other.getClass().getName());
+      }
+
+      int lastComparison = 0;
+
+      lastComparison = Boolean.valueOf(isSetSuccess()).compareTo(other.isSetSuccess());
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+      if (isSetSuccess()) {
+        lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.success, other.success);
+        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("deliveryOrder_result(");
+      boolean first = true;
+
+      sb.append("success:");
+      if (this.success == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.success);
+      }
+      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 (success != null) {
+        success.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, ClassNotFoundException {
+      try {
+        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 deliveryOrder_resultStandardSchemeFactory implements SchemeFactory {
+      public deliveryOrder_resultStandardScheme getScheme() {
+        return new deliveryOrder_resultStandardScheme();
+      }
+    }
+
+    private static class deliveryOrder_resultStandardScheme extends StandardScheme<deliveryOrder_result> {
+
+      public void read(org.apache.thrift.protocol.TProtocol iprot, deliveryOrder_result 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 0: // SUCCESS
+              if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
+                struct.success = new Result();
+                struct.success.read(iprot);
+                struct.setSuccessIsSet(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, deliveryOrder_result struct) throws org.apache.thrift.TException {
+        struct.validate();
+
+        oprot.writeStructBegin(STRUCT_DESC);
+        if (struct.success != null) {
+          oprot.writeFieldBegin(SUCCESS_FIELD_DESC);
+          struct.success.write(oprot);
+          oprot.writeFieldEnd();
+        }
+        oprot.writeFieldStop();
+        oprot.writeStructEnd();
+      }
+
+    }
+
+    private static class deliveryOrder_resultTupleSchemeFactory implements SchemeFactory {
+      public deliveryOrder_resultTupleScheme getScheme() {
+        return new deliveryOrder_resultTupleScheme();
+      }
+    }
+
+    private static class deliveryOrder_resultTupleScheme extends TupleScheme<deliveryOrder_result> {
+
+      @Override
+      public void write(org.apache.thrift.protocol.TProtocol prot, deliveryOrder_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol oprot = (TTupleProtocol) prot;
+        BitSet optionals = new BitSet();
+        if (struct.isSetSuccess()) {
+          optionals.set(0);
+        }
+        oprot.writeBitSet(optionals, 1);
+        if (struct.isSetSuccess()) {
+          struct.success.write(oprot);
+        }
+      }
+
+      @Override
+      public void read(org.apache.thrift.protocol.TProtocol prot, deliveryOrder_result struct) throws org.apache.thrift.TException {
+        TTupleProtocol iprot = (TTupleProtocol) prot;
+        BitSet incoming = iprot.readBitSet(1);
+        if (incoming.get(0)) {
+          struct.success = new Result();
+          struct.success.read(iprot);
+          struct.setSuccessIsSet(true);
+        }
+      }
+    }
+
+  }
+
+}

+ 656 - 0
src/main/java/com/ljsd/jieling/thrift/idl/RechargeResult.java

@@ -0,0 +1,656 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package com.ljsd.jieling.thrift.idl;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2023-2-27")
+public class RechargeResult implements org.apache.thrift.TBase<RechargeResult, RechargeResult._Fields>, java.io.Serializable, Cloneable, Comparable<RechargeResult> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("RechargeResult");
+
+  private static final org.apache.thrift.protocol.TField RESULT_CODE_FIELD_DESC = new org.apache.thrift.protocol.TField("resultCode", org.apache.thrift.protocol.TType.I32, (short)1);
+  private static final org.apache.thrift.protocol.TField RESULT_MSG_FIELD_DESC = new org.apache.thrift.protocol.TField("resultMsg", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField SUB_NODE_SET_FIELD_DESC = new org.apache.thrift.protocol.TField("subNodeSet", org.apache.thrift.protocol.TType.SET, (short)3);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new RechargeResultStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new RechargeResultTupleSchemeFactory());
+  }
+
+  public int resultCode; // optional
+  public String resultMsg; // optional
+  public Set<Integer> subNodeSet; // 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 {
+    RESULT_CODE((short)1, "resultCode"),
+    RESULT_MSG((short)2, "resultMsg"),
+    SUB_NODE_SET((short)3, "subNodeSet");
+
+    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: // RESULT_CODE
+          return RESULT_CODE;
+        case 2: // RESULT_MSG
+          return RESULT_MSG;
+        case 3: // SUB_NODE_SET
+          return SUB_NODE_SET;
+        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 __RESULTCODE_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.RESULT_CODE,_Fields.RESULT_MSG,_Fields.SUB_NODE_SET};
+  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.RESULT_CODE, new org.apache.thrift.meta_data.FieldMetaData("resultCode", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    tmpMap.put(_Fields.RESULT_MSG, new org.apache.thrift.meta_data.FieldMetaData("resultMsg", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.SUB_NODE_SET, new org.apache.thrift.meta_data.FieldMetaData("subNodeSet", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.SetMetaData(org.apache.thrift.protocol.TType.SET, 
+            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32))));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(RechargeResult.class, metaDataMap);
+  }
+
+  public RechargeResult() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public RechargeResult(RechargeResult other) {
+    __isset_bitfield = other.__isset_bitfield;
+    this.resultCode = other.resultCode;
+    if (other.isSetResultMsg()) {
+      this.resultMsg = other.resultMsg;
+    }
+    if (other.isSetSubNodeSet()) {
+      Set<Integer> __this__subNodeSet = new HashSet<Integer>(other.subNodeSet);
+      this.subNodeSet = __this__subNodeSet;
+    }
+  }
+
+  public RechargeResult deepCopy() {
+    return new RechargeResult(this);
+  }
+
+  @Override
+  public void clear() {
+    setResultCodeIsSet(false);
+    this.resultCode = 0;
+    this.resultMsg = null;
+    this.subNodeSet = null;
+  }
+
+  public int getResultCode() {
+    return this.resultCode;
+  }
+
+  public RechargeResult setResultCode(int resultCode) {
+    this.resultCode = resultCode;
+    setResultCodeIsSet(true);
+    return this;
+  }
+
+  public void unsetResultCode() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __RESULTCODE_ISSET_ID);
+  }
+
+  /** Returns true if field resultCode is set (has been assigned a value) and false otherwise */
+  public boolean isSetResultCode() {
+    return EncodingUtils.testBit(__isset_bitfield, __RESULTCODE_ISSET_ID);
+  }
+
+  public void setResultCodeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __RESULTCODE_ISSET_ID, value);
+  }
+
+  public String getResultMsg() {
+    return this.resultMsg;
+  }
+
+  public RechargeResult setResultMsg(String resultMsg) {
+    this.resultMsg = resultMsg;
+    return this;
+  }
+
+  public void unsetResultMsg() {
+    this.resultMsg = null;
+  }
+
+  /** Returns true if field resultMsg is set (has been assigned a value) and false otherwise */
+  public boolean isSetResultMsg() {
+    return this.resultMsg != null;
+  }
+
+  public void setResultMsgIsSet(boolean value) {
+    if (!value) {
+      this.resultMsg = null;
+    }
+  }
+
+  public int getSubNodeSetSize() {
+    return (this.subNodeSet == null) ? 0 : this.subNodeSet.size();
+  }
+
+  public java.util.Iterator<Integer> getSubNodeSetIterator() {
+    return (this.subNodeSet == null) ? null : this.subNodeSet.iterator();
+  }
+
+  public void addToSubNodeSet(int elem) {
+    if (this.subNodeSet == null) {
+      this.subNodeSet = new HashSet<Integer>();
+    }
+    this.subNodeSet.add(elem);
+  }
+
+  public Set<Integer> getSubNodeSet() {
+    return this.subNodeSet;
+  }
+
+  public RechargeResult setSubNodeSet(Set<Integer> subNodeSet) {
+    this.subNodeSet = subNodeSet;
+    return this;
+  }
+
+  public void unsetSubNodeSet() {
+    this.subNodeSet = null;
+  }
+
+  /** Returns true if field subNodeSet is set (has been assigned a value) and false otherwise */
+  public boolean isSetSubNodeSet() {
+    return this.subNodeSet != null;
+  }
+
+  public void setSubNodeSetIsSet(boolean value) {
+    if (!value) {
+      this.subNodeSet = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case RESULT_CODE:
+      if (value == null) {
+        unsetResultCode();
+      } else {
+        setResultCode((Integer)value);
+      }
+      break;
+
+    case RESULT_MSG:
+      if (value == null) {
+        unsetResultMsg();
+      } else {
+        setResultMsg((String)value);
+      }
+      break;
+
+    case SUB_NODE_SET:
+      if (value == null) {
+        unsetSubNodeSet();
+      } else {
+        setSubNodeSet((Set<Integer>)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case RESULT_CODE:
+      return Integer.valueOf(getResultCode());
+
+    case RESULT_MSG:
+      return getResultMsg();
+
+    case SUB_NODE_SET:
+      return getSubNodeSet();
+
+    }
+    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 RESULT_CODE:
+      return isSetResultCode();
+    case RESULT_MSG:
+      return isSetResultMsg();
+    case SUB_NODE_SET:
+      return isSetSubNodeSet();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof RechargeResult)
+      return this.equals((RechargeResult)that);
+    return false;
+  }
+
+  public boolean equals(RechargeResult that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_resultCode = true && this.isSetResultCode();
+    boolean that_present_resultCode = true && that.isSetResultCode();
+    if (this_present_resultCode || that_present_resultCode) {
+      if (!(this_present_resultCode && that_present_resultCode))
+        return false;
+      if (this.resultCode != that.resultCode)
+        return false;
+    }
+
+    boolean this_present_resultMsg = true && this.isSetResultMsg();
+    boolean that_present_resultMsg = true && that.isSetResultMsg();
+    if (this_present_resultMsg || that_present_resultMsg) {
+      if (!(this_present_resultMsg && that_present_resultMsg))
+        return false;
+      if (!this.resultMsg.equals(that.resultMsg))
+        return false;
+    }
+
+    boolean this_present_subNodeSet = true && this.isSetSubNodeSet();
+    boolean that_present_subNodeSet = true && that.isSetSubNodeSet();
+    if (this_present_subNodeSet || that_present_subNodeSet) {
+      if (!(this_present_subNodeSet && that_present_subNodeSet))
+        return false;
+      if (!this.subNodeSet.equals(that.subNodeSet))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_resultCode = true && (isSetResultCode());
+    list.add(present_resultCode);
+    if (present_resultCode)
+      list.add(resultCode);
+
+    boolean present_resultMsg = true && (isSetResultMsg());
+    list.add(present_resultMsg);
+    if (present_resultMsg)
+      list.add(resultMsg);
+
+    boolean present_subNodeSet = true && (isSetSubNodeSet());
+    list.add(present_subNodeSet);
+    if (present_subNodeSet)
+      list.add(subNodeSet);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(RechargeResult other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetResultCode()).compareTo(other.isSetResultCode());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetResultCode()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resultCode, other.resultCode);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetResultMsg()).compareTo(other.isSetResultMsg());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetResultMsg()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resultMsg, other.resultMsg);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetSubNodeSet()).compareTo(other.isSetSubNodeSet());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetSubNodeSet()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.subNodeSet, other.subNodeSet);
+      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("RechargeResult(");
+    boolean first = true;
+
+    if (isSetResultCode()) {
+      sb.append("resultCode:");
+      sb.append(this.resultCode);
+      first = false;
+    }
+    if (isSetResultMsg()) {
+      if (!first) sb.append(", ");
+      sb.append("resultMsg:");
+      if (this.resultMsg == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.resultMsg);
+      }
+      first = false;
+    }
+    if (isSetSubNodeSet()) {
+      if (!first) sb.append(", ");
+      sb.append("subNodeSet:");
+      if (this.subNodeSet == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.subNodeSet);
+      }
+      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 RechargeResultStandardSchemeFactory implements SchemeFactory {
+    public RechargeResultStandardScheme getScheme() {
+      return new RechargeResultStandardScheme();
+    }
+  }
+
+  private static class RechargeResultStandardScheme extends StandardScheme<RechargeResult> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, RechargeResult 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: // RESULT_CODE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.resultCode = iprot.readI32();
+              struct.setResultCodeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // RESULT_MSG
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.resultMsg = iprot.readString();
+              struct.setResultMsgIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // SUB_NODE_SET
+            if (schemeField.type == org.apache.thrift.protocol.TType.SET) {
+              {
+                org.apache.thrift.protocol.TSet _set0 = iprot.readSetBegin();
+                struct.subNodeSet = new HashSet<Integer>(2*_set0.size);
+                int _elem1;
+                for (int _i2 = 0; _i2 < _set0.size; ++_i2)
+                {
+                  _elem1 = iprot.readI32();
+                  struct.subNodeSet.add(_elem1);
+                }
+                iprot.readSetEnd();
+              }
+              struct.setSubNodeSetIsSet(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, RechargeResult struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.isSetResultCode()) {
+        oprot.writeFieldBegin(RESULT_CODE_FIELD_DESC);
+        oprot.writeI32(struct.resultCode);
+        oprot.writeFieldEnd();
+      }
+      if (struct.resultMsg != null) {
+        if (struct.isSetResultMsg()) {
+          oprot.writeFieldBegin(RESULT_MSG_FIELD_DESC);
+          oprot.writeString(struct.resultMsg);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.subNodeSet != null) {
+        if (struct.isSetSubNodeSet()) {
+          oprot.writeFieldBegin(SUB_NODE_SET_FIELD_DESC);
+          {
+            oprot.writeSetBegin(new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.I32, struct.subNodeSet.size()));
+            for (int _iter3 : struct.subNodeSet)
+            {
+              oprot.writeI32(_iter3);
+            }
+            oprot.writeSetEnd();
+          }
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class RechargeResultTupleSchemeFactory implements SchemeFactory {
+    public RechargeResultTupleScheme getScheme() {
+      return new RechargeResultTupleScheme();
+    }
+  }
+
+  private static class RechargeResultTupleScheme extends TupleScheme<RechargeResult> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, RechargeResult struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetResultCode()) {
+        optionals.set(0);
+      }
+      if (struct.isSetResultMsg()) {
+        optionals.set(1);
+      }
+      if (struct.isSetSubNodeSet()) {
+        optionals.set(2);
+      }
+      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetResultCode()) {
+        oprot.writeI32(struct.resultCode);
+      }
+      if (struct.isSetResultMsg()) {
+        oprot.writeString(struct.resultMsg);
+      }
+      if (struct.isSetSubNodeSet()) {
+        {
+          oprot.writeI32(struct.subNodeSet.size());
+          for (int _iter4 : struct.subNodeSet)
+          {
+            oprot.writeI32(_iter4);
+          }
+        }
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, RechargeResult struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(3);
+      if (incoming.get(0)) {
+        struct.resultCode = iprot.readI32();
+        struct.setResultCodeIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.resultMsg = iprot.readString();
+        struct.setResultMsgIsSet(true);
+      }
+      if (incoming.get(2)) {
+        {
+          org.apache.thrift.protocol.TSet _set5 = new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.I32, iprot.readI32());
+          struct.subNodeSet = new HashSet<Integer>(2*_set5.size);
+          int _elem6;
+          for (int _i7 = 0; _i7 < _set5.size; ++_i7)
+          {
+            _elem6 = iprot.readI32();
+            struct.subNodeSet.add(_elem6);
+          }
+        }
+        struct.setSubNodeSetIsSet(true);
+      }
+    }
+  }
+
+}
+

+ 500 - 0
src/main/java/com/ljsd/jieling/thrift/idl/Result.java

@@ -0,0 +1,500 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package com.ljsd.jieling.thrift.idl;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2023-2-27")
+public class Result implements org.apache.thrift.TBase<Result, Result._Fields>, java.io.Serializable, Cloneable, Comparable<Result> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("Result");
+
+  private static final org.apache.thrift.protocol.TField RESULT_CODE_FIELD_DESC = new org.apache.thrift.protocol.TField("resultCode", org.apache.thrift.protocol.TType.I32, (short)1);
+  private static final org.apache.thrift.protocol.TField RESULT_MSG_FIELD_DESC = new org.apache.thrift.protocol.TField("resultMsg", org.apache.thrift.protocol.TType.STRING, (short)2);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new ResultStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new ResultTupleSchemeFactory());
+  }
+
+  public int resultCode; // optional
+  public String resultMsg; // 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 {
+    RESULT_CODE((short)1, "resultCode"),
+    RESULT_MSG((short)2, "resultMsg");
+
+    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: // RESULT_CODE
+          return RESULT_CODE;
+        case 2: // RESULT_MSG
+          return RESULT_MSG;
+        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 __RESULTCODE_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.RESULT_CODE,_Fields.RESULT_MSG};
+  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.RESULT_CODE, new org.apache.thrift.meta_data.FieldMetaData("resultCode", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    tmpMap.put(_Fields.RESULT_MSG, new org.apache.thrift.meta_data.FieldMetaData("resultMsg", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Result.class, metaDataMap);
+  }
+
+  public Result() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public Result(Result other) {
+    __isset_bitfield = other.__isset_bitfield;
+    this.resultCode = other.resultCode;
+    if (other.isSetResultMsg()) {
+      this.resultMsg = other.resultMsg;
+    }
+  }
+
+  public Result deepCopy() {
+    return new Result(this);
+  }
+
+  @Override
+  public void clear() {
+    setResultCodeIsSet(false);
+    this.resultCode = 0;
+    this.resultMsg = null;
+  }
+
+  public int getResultCode() {
+    return this.resultCode;
+  }
+
+  public Result setResultCode(int resultCode) {
+    this.resultCode = resultCode;
+    setResultCodeIsSet(true);
+    return this;
+  }
+
+  public void unsetResultCode() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __RESULTCODE_ISSET_ID);
+  }
+
+  /** Returns true if field resultCode is set (has been assigned a value) and false otherwise */
+  public boolean isSetResultCode() {
+    return EncodingUtils.testBit(__isset_bitfield, __RESULTCODE_ISSET_ID);
+  }
+
+  public void setResultCodeIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __RESULTCODE_ISSET_ID, value);
+  }
+
+  public String getResultMsg() {
+    return this.resultMsg;
+  }
+
+  public Result setResultMsg(String resultMsg) {
+    this.resultMsg = resultMsg;
+    return this;
+  }
+
+  public void unsetResultMsg() {
+    this.resultMsg = null;
+  }
+
+  /** Returns true if field resultMsg is set (has been assigned a value) and false otherwise */
+  public boolean isSetResultMsg() {
+    return this.resultMsg != null;
+  }
+
+  public void setResultMsgIsSet(boolean value) {
+    if (!value) {
+      this.resultMsg = null;
+    }
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case RESULT_CODE:
+      if (value == null) {
+        unsetResultCode();
+      } else {
+        setResultCode((Integer)value);
+      }
+      break;
+
+    case RESULT_MSG:
+      if (value == null) {
+        unsetResultMsg();
+      } else {
+        setResultMsg((String)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case RESULT_CODE:
+      return Integer.valueOf(getResultCode());
+
+    case RESULT_MSG:
+      return getResultMsg();
+
+    }
+    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 RESULT_CODE:
+      return isSetResultCode();
+    case RESULT_MSG:
+      return isSetResultMsg();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof Result)
+      return this.equals((Result)that);
+    return false;
+  }
+
+  public boolean equals(Result that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_resultCode = true && this.isSetResultCode();
+    boolean that_present_resultCode = true && that.isSetResultCode();
+    if (this_present_resultCode || that_present_resultCode) {
+      if (!(this_present_resultCode && that_present_resultCode))
+        return false;
+      if (this.resultCode != that.resultCode)
+        return false;
+    }
+
+    boolean this_present_resultMsg = true && this.isSetResultMsg();
+    boolean that_present_resultMsg = true && that.isSetResultMsg();
+    if (this_present_resultMsg || that_present_resultMsg) {
+      if (!(this_present_resultMsg && that_present_resultMsg))
+        return false;
+      if (!this.resultMsg.equals(that.resultMsg))
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_resultCode = true && (isSetResultCode());
+    list.add(present_resultCode);
+    if (present_resultCode)
+      list.add(resultCode);
+
+    boolean present_resultMsg = true && (isSetResultMsg());
+    list.add(present_resultMsg);
+    if (present_resultMsg)
+      list.add(resultMsg);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(Result other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetResultCode()).compareTo(other.isSetResultCode());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetResultCode()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resultCode, other.resultCode);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetResultMsg()).compareTo(other.isSetResultMsg());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetResultMsg()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resultMsg, other.resultMsg);
+      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("Result(");
+    boolean first = true;
+
+    if (isSetResultCode()) {
+      sb.append("resultCode:");
+      sb.append(this.resultCode);
+      first = false;
+    }
+    if (isSetResultMsg()) {
+      if (!first) sb.append(", ");
+      sb.append("resultMsg:");
+      if (this.resultMsg == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.resultMsg);
+      }
+      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 ResultStandardSchemeFactory implements SchemeFactory {
+    public ResultStandardScheme getScheme() {
+      return new ResultStandardScheme();
+    }
+  }
+
+  private static class ResultStandardScheme extends StandardScheme<Result> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, Result 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: // RESULT_CODE
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.resultCode = iprot.readI32();
+              struct.setResultCodeIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // RESULT_MSG
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.resultMsg = iprot.readString();
+              struct.setResultMsgIsSet(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, Result struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.isSetResultCode()) {
+        oprot.writeFieldBegin(RESULT_CODE_FIELD_DESC);
+        oprot.writeI32(struct.resultCode);
+        oprot.writeFieldEnd();
+      }
+      if (struct.resultMsg != null) {
+        if (struct.isSetResultMsg()) {
+          oprot.writeFieldBegin(RESULT_MSG_FIELD_DESC);
+          oprot.writeString(struct.resultMsg);
+          oprot.writeFieldEnd();
+        }
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class ResultTupleSchemeFactory implements SchemeFactory {
+    public ResultTupleScheme getScheme() {
+      return new ResultTupleScheme();
+    }
+  }
+
+  private static class ResultTupleScheme extends TupleScheme<Result> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, Result struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetResultCode()) {
+        optionals.set(0);
+      }
+      if (struct.isSetResultMsg()) {
+        optionals.set(1);
+      }
+      oprot.writeBitSet(optionals, 2);
+      if (struct.isSetResultCode()) {
+        oprot.writeI32(struct.resultCode);
+      }
+      if (struct.isSetResultMsg()) {
+        oprot.writeString(struct.resultMsg);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, Result struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(2);
+      if (incoming.get(0)) {
+        struct.resultCode = iprot.readI32();
+        struct.setResultCodeIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.resultMsg = iprot.readString();
+        struct.setResultMsgIsSet(true);
+      }
+    }
+  }
+
+}
+

+ 607 - 0
src/main/java/com/ljsd/jieling/thrift/idl/itemData.java

@@ -0,0 +1,607 @@
+/**
+ * Autogenerated by Thrift Compiler (0.9.2)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ *  @generated
+ */
+package com.ljsd.jieling.thrift.idl;
+
+import org.apache.thrift.scheme.IScheme;
+import org.apache.thrift.scheme.SchemeFactory;
+import org.apache.thrift.scheme.StandardScheme;
+
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import javax.annotation.Generated;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2023-2-27")
+public class itemData implements org.apache.thrift.TBase<itemData, itemData._Fields>, java.io.Serializable, Cloneable, Comparable<itemData> {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("itemData");
+
+  private static final org.apache.thrift.protocol.TField ITEM_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("item_id", org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField STORE_ITEM_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("store_item_id", org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField COUNT_FIELD_DESC = new org.apache.thrift.protocol.TField("count", org.apache.thrift.protocol.TType.I32, (short)3);
+
+  private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
+  static {
+    schemes.put(StandardScheme.class, new itemDataStandardSchemeFactory());
+    schemes.put(TupleScheme.class, new itemDataTupleSchemeFactory());
+  }
+
+  public String item_id; // optional
+  public String store_item_id; // optional
+  public int count; // 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 {
+    ITEM_ID((short)1, "item_id"),
+    STORE_ITEM_ID((short)2, "store_item_id"),
+    COUNT((short)3, "count");
+
+    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: // ITEM_ID
+          return ITEM_ID;
+        case 2: // STORE_ITEM_ID
+          return STORE_ITEM_ID;
+        case 3: // COUNT
+          return COUNT;
+        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 __COUNT_ISSET_ID = 0;
+  private byte __isset_bitfield = 0;
+  private static final _Fields optionals[] = {_Fields.ITEM_ID,_Fields.STORE_ITEM_ID,_Fields.COUNT};
+  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.ITEM_ID, new org.apache.thrift.meta_data.FieldMetaData("item_id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.STORE_ITEM_ID, new org.apache.thrift.meta_data.FieldMetaData("store_item_id", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.COUNT, new org.apache.thrift.meta_data.FieldMetaData("count", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
+    metaDataMap = Collections.unmodifiableMap(tmpMap);
+    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(itemData.class, metaDataMap);
+  }
+
+  public itemData() {
+  }
+
+  /**
+   * Performs a deep copy on <i>other</i>.
+   */
+  public itemData(itemData other) {
+    __isset_bitfield = other.__isset_bitfield;
+    if (other.isSetItem_id()) {
+      this.item_id = other.item_id;
+    }
+    if (other.isSetStore_item_id()) {
+      this.store_item_id = other.store_item_id;
+    }
+    this.count = other.count;
+  }
+
+  public itemData deepCopy() {
+    return new itemData(this);
+  }
+
+  @Override
+  public void clear() {
+    this.item_id = null;
+    this.store_item_id = null;
+    setCountIsSet(false);
+    this.count = 0;
+  }
+
+  public String getItem_id() {
+    return this.item_id;
+  }
+
+  public itemData setItem_id(String item_id) {
+    this.item_id = item_id;
+    return this;
+  }
+
+  public void unsetItem_id() {
+    this.item_id = null;
+  }
+
+  /** Returns true if field item_id is set (has been assigned a value) and false otherwise */
+  public boolean isSetItem_id() {
+    return this.item_id != null;
+  }
+
+  public void setItem_idIsSet(boolean value) {
+    if (!value) {
+      this.item_id = null;
+    }
+  }
+
+  public String getStore_item_id() {
+    return this.store_item_id;
+  }
+
+  public itemData setStore_item_id(String store_item_id) {
+    this.store_item_id = store_item_id;
+    return this;
+  }
+
+  public void unsetStore_item_id() {
+    this.store_item_id = null;
+  }
+
+  /** Returns true if field store_item_id is set (has been assigned a value) and false otherwise */
+  public boolean isSetStore_item_id() {
+    return this.store_item_id != null;
+  }
+
+  public void setStore_item_idIsSet(boolean value) {
+    if (!value) {
+      this.store_item_id = null;
+    }
+  }
+
+  public int getCount() {
+    return this.count;
+  }
+
+  public itemData setCount(int count) {
+    this.count = count;
+    setCountIsSet(true);
+    return this;
+  }
+
+  public void unsetCount() {
+    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __COUNT_ISSET_ID);
+  }
+
+  /** Returns true if field count is set (has been assigned a value) and false otherwise */
+  public boolean isSetCount() {
+    return EncodingUtils.testBit(__isset_bitfield, __COUNT_ISSET_ID);
+  }
+
+  public void setCountIsSet(boolean value) {
+    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __COUNT_ISSET_ID, value);
+  }
+
+  public void setFieldValue(_Fields field, Object value) {
+    switch (field) {
+    case ITEM_ID:
+      if (value == null) {
+        unsetItem_id();
+      } else {
+        setItem_id((String)value);
+      }
+      break;
+
+    case STORE_ITEM_ID:
+      if (value == null) {
+        unsetStore_item_id();
+      } else {
+        setStore_item_id((String)value);
+      }
+      break;
+
+    case COUNT:
+      if (value == null) {
+        unsetCount();
+      } else {
+        setCount((Integer)value);
+      }
+      break;
+
+    }
+  }
+
+  public Object getFieldValue(_Fields field) {
+    switch (field) {
+    case ITEM_ID:
+      return getItem_id();
+
+    case STORE_ITEM_ID:
+      return getStore_item_id();
+
+    case COUNT:
+      return Integer.valueOf(getCount());
+
+    }
+    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 ITEM_ID:
+      return isSetItem_id();
+    case STORE_ITEM_ID:
+      return isSetStore_item_id();
+    case COUNT:
+      return isSetCount();
+    }
+    throw new IllegalStateException();
+  }
+
+  @Override
+  public boolean equals(Object that) {
+    if (that == null)
+      return false;
+    if (that instanceof itemData)
+      return this.equals((itemData)that);
+    return false;
+  }
+
+  public boolean equals(itemData that) {
+    if (that == null)
+      return false;
+
+    boolean this_present_item_id = true && this.isSetItem_id();
+    boolean that_present_item_id = true && that.isSetItem_id();
+    if (this_present_item_id || that_present_item_id) {
+      if (!(this_present_item_id && that_present_item_id))
+        return false;
+      if (!this.item_id.equals(that.item_id))
+        return false;
+    }
+
+    boolean this_present_store_item_id = true && this.isSetStore_item_id();
+    boolean that_present_store_item_id = true && that.isSetStore_item_id();
+    if (this_present_store_item_id || that_present_store_item_id) {
+      if (!(this_present_store_item_id && that_present_store_item_id))
+        return false;
+      if (!this.store_item_id.equals(that.store_item_id))
+        return false;
+    }
+
+    boolean this_present_count = true && this.isSetCount();
+    boolean that_present_count = true && that.isSetCount();
+    if (this_present_count || that_present_count) {
+      if (!(this_present_count && that_present_count))
+        return false;
+      if (this.count != that.count)
+        return false;
+    }
+
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    List<Object> list = new ArrayList<Object>();
+
+    boolean present_item_id = true && (isSetItem_id());
+    list.add(present_item_id);
+    if (present_item_id)
+      list.add(item_id);
+
+    boolean present_store_item_id = true && (isSetStore_item_id());
+    list.add(present_store_item_id);
+    if (present_store_item_id)
+      list.add(store_item_id);
+
+    boolean present_count = true && (isSetCount());
+    list.add(present_count);
+    if (present_count)
+      list.add(count);
+
+    return list.hashCode();
+  }
+
+  @Override
+  public int compareTo(itemData other) {
+    if (!getClass().equals(other.getClass())) {
+      return getClass().getName().compareTo(other.getClass().getName());
+    }
+
+    int lastComparison = 0;
+
+    lastComparison = Boolean.valueOf(isSetItem_id()).compareTo(other.isSetItem_id());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetItem_id()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.item_id, other.item_id);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetStore_item_id()).compareTo(other.isSetStore_item_id());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetStore_item_id()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.store_item_id, other.store_item_id);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
+    lastComparison = Boolean.valueOf(isSetCount()).compareTo(other.isSetCount());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetCount()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.count, other.count);
+      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("itemData(");
+    boolean first = true;
+
+    if (isSetItem_id()) {
+      sb.append("item_id:");
+      if (this.item_id == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.item_id);
+      }
+      first = false;
+    }
+    if (isSetStore_item_id()) {
+      if (!first) sb.append(", ");
+      sb.append("store_item_id:");
+      if (this.store_item_id == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.store_item_id);
+      }
+      first = false;
+    }
+    if (isSetCount()) {
+      if (!first) sb.append(", ");
+      sb.append("count:");
+      sb.append(this.count);
+      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 itemDataStandardSchemeFactory implements SchemeFactory {
+    public itemDataStandardScheme getScheme() {
+      return new itemDataStandardScheme();
+    }
+  }
+
+  private static class itemDataStandardScheme extends StandardScheme<itemData> {
+
+    public void read(org.apache.thrift.protocol.TProtocol iprot, itemData 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: // ITEM_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.item_id = iprot.readString();
+              struct.setItem_idIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 2: // STORE_ITEM_ID
+            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
+              struct.store_item_id = iprot.readString();
+              struct.setStore_item_idIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
+          case 3: // COUNT
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.count = iprot.readI32();
+              struct.setCountIsSet(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, itemData struct) throws org.apache.thrift.TException {
+      struct.validate();
+
+      oprot.writeStructBegin(STRUCT_DESC);
+      if (struct.item_id != null) {
+        if (struct.isSetItem_id()) {
+          oprot.writeFieldBegin(ITEM_ID_FIELD_DESC);
+          oprot.writeString(struct.item_id);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.store_item_id != null) {
+        if (struct.isSetStore_item_id()) {
+          oprot.writeFieldBegin(STORE_ITEM_ID_FIELD_DESC);
+          oprot.writeString(struct.store_item_id);
+          oprot.writeFieldEnd();
+        }
+      }
+      if (struct.isSetCount()) {
+        oprot.writeFieldBegin(COUNT_FIELD_DESC);
+        oprot.writeI32(struct.count);
+        oprot.writeFieldEnd();
+      }
+      oprot.writeFieldStop();
+      oprot.writeStructEnd();
+    }
+
+  }
+
+  private static class itemDataTupleSchemeFactory implements SchemeFactory {
+    public itemDataTupleScheme getScheme() {
+      return new itemDataTupleScheme();
+    }
+  }
+
+  private static class itemDataTupleScheme extends TupleScheme<itemData> {
+
+    @Override
+    public void write(org.apache.thrift.protocol.TProtocol prot, itemData struct) throws org.apache.thrift.TException {
+      TTupleProtocol oprot = (TTupleProtocol) prot;
+      BitSet optionals = new BitSet();
+      if (struct.isSetItem_id()) {
+        optionals.set(0);
+      }
+      if (struct.isSetStore_item_id()) {
+        optionals.set(1);
+      }
+      if (struct.isSetCount()) {
+        optionals.set(2);
+      }
+      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetItem_id()) {
+        oprot.writeString(struct.item_id);
+      }
+      if (struct.isSetStore_item_id()) {
+        oprot.writeString(struct.store_item_id);
+      }
+      if (struct.isSetCount()) {
+        oprot.writeI32(struct.count);
+      }
+    }
+
+    @Override
+    public void read(org.apache.thrift.protocol.TProtocol prot, itemData struct) throws org.apache.thrift.TException {
+      TTupleProtocol iprot = (TTupleProtocol) prot;
+      BitSet incoming = iprot.readBitSet(3);
+      if (incoming.get(0)) {
+        struct.item_id = iprot.readString();
+        struct.setItem_idIsSet(true);
+      }
+      if (incoming.get(1)) {
+        struct.store_item_id = iprot.readString();
+        struct.setStore_item_idIsSet(true);
+      }
+      if (incoming.get(2)) {
+        struct.count = iprot.readI32();
+        struct.setCountIsSet(true);
+      }
+    }
+  }
+
+}
+

+ 13 - 0
src/main/java/com/ljsd/jieling/thrift/pool/ServiceKey.java

@@ -0,0 +1,13 @@
+package com.ljsd.jieling.thrift.pool;
+
+/**
+ * Created by Administrator on 2015/8/12.
+ */
+public class ServiceKey {
+
+    public static final String RPCCore = "RPCCORE";
+    public static final String RPCMATCH = "RPCMATCH";
+    public static final String GM_CANCLE_SCENE = "GM_CANCLE_SCENE";
+
+
+}

+ 70 - 0
src/main/java/com/ljsd/jieling/thrift/pool/ThriftClient.java

@@ -0,0 +1,70 @@
+package com.ljsd.jieling.thrift.pool;
+
+import com.ljsd.jieling.thrift.idl.RPCRequestIFace;
+import com.ljsd.jieling.thrift.idl.RechargeResult;
+import com.ljsd.jieling.thrift.idl.Result;
+import org.apache.thrift.protocol.TBinaryProtocol;
+import org.apache.thrift.protocol.TProtocol;
+import org.apache.thrift.transport.TSocket;
+import org.apache.thrift.transport.TTransport;
+
+public class ThriftClient {
+
+    // 替换为实际的服务 IP 和端口
+    private static final String SERVER_IP = "127.0.0.1";
+    private static final int SERVER_PORT = 7915;
+    private static final int TIMEOUT_MS = 3000;
+
+    /**
+     * 调用发货接口 deliveryRecharge
+     */
+    public static Result deliveryRecharge(int uid, String goodsId, String openId,
+                                          String orderId, long orderTime, int amount) {
+
+        TTransport transport = null;
+        try {
+            transport = new TSocket(SERVER_IP, SERVER_PORT, TIMEOUT_MS);
+            transport.open();
+
+            TProtocol protocol = new TBinaryProtocol(transport);
+            RPCRequestIFace.Client client = new RPCRequestIFace.Client(protocol);
+
+            return client.deliveryRecharge(uid, goodsId, openId, orderId, orderTime, amount);
+
+        } catch (Exception e) {
+            System.err.println("Thrift 调用 deliveryRecharge 失败: " + e.getMessage());
+            e.printStackTrace();
+            return null;
+        } finally {
+            if (transport != null && transport.isOpen()) {
+                transport.close();
+            }
+        }
+    }
+
+    /**
+     * 调用 getRecharge 查询充值状态
+     */
+    public static RechargeResult getRecharge(int uid) {
+        TTransport transport = null;
+        try {
+            transport = new TSocket(SERVER_IP, SERVER_PORT, TIMEOUT_MS);
+            transport.open();
+
+            TProtocol protocol = new TBinaryProtocol(transport);
+            RPCRequestIFace.Client client = new RPCRequestIFace.Client(protocol);
+
+            return client.getRecharge(uid);
+
+        } catch (Exception e) {
+            System.err.println("Thrift 调用 getRecharge 失败: " + e.getMessage());
+            e.printStackTrace();
+            return null;
+        } finally {
+            if (transport != null && transport.isOpen()) {
+                transport.close();
+            }
+        }
+    }
+}
+