コード例 #1
0
/** @author tuanda */
public class GetChooseAvatarBusiness extends AbstractBusiness {

  private static final Logger mLog =
      LoggerContext.getLoggerFactory().getLogger(GetChooseAvatarBusiness.class);

  @Override
  public int handleMessage(ISession aSession, IRequestMessage aReqMsg, IResponsePackage aResPkg) {
    mLog.debug("[GET_AVATARS]: Catch");
    MessageFactory msgFactory = aSession.getMessageFactory();
    GetChooseAvatarResponse resBuyAvatar =
        (GetChooseAvatarResponse) msgFactory.getResponseMessage(aReqMsg.getID());
    resBuyAvatar.session = aSession;
    try {
      GetChooseAvatarRequest rqBuyAvatar = (GetChooseAvatarRequest) aReqMsg;
      long uid = rqBuyAvatar.uid;
      String res = AvatarManager.getChooseAvatarForUser(uid, aSession.isMobileDevice());
      resBuyAvatar.setSuccess(res);
    } catch (Throwable t) {
      t.printStackTrace();
      resBuyAvatar.setFailure("Có lỗi xảy ra với avatar bạn muốn mua.");
    } finally {
      if ((resBuyAvatar != null)) {
        aResPkg.addMessage(resBuyAvatar);
      }
    }
    return 1;
  }
}
コード例 #2
0
/** @author tuanda */
public class GetTopGameBusiness extends AbstractBusiness {

  private static final org.slf4j.Logger mLog =
      LoggerContext.getLoggerFactory().getLogger(GetTopGameBusiness.class);

  public int handleMessage(ISession aSession, IRequestMessage aReqMsg, IResponsePackage aResPkg) {
    mLog.debug("get TopGame");
    MessageFactory msgFactory = aSession.getMessageFactory();
    GetTopGameResponse resalbum =
        (GetTopGameResponse) msgFactory.getResponseMessage(aReqMsg.getID());

    try {

      GetTopGameRequest rqAlb = (GetTopGameRequest) aReqMsg;
      UserEntity entity = aSession.getUserEntity();
      CacheGameInfo cacheGame = new CacheGameInfo();
      List<UserEntity> lstUsers = cacheGame.getTopGame(entity.partnerId, rqAlb.gameId);
      StringBuilder sb = new StringBuilder();
      int userSize = lstUsers.size();

      for (int i = 0; i < userSize; i++) {
        UserEntity usrEntity = lstUsers.get(i);
        sb.append(usrEntity.mUid).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(usrEntity.mUsername).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(usrEntity.point).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(usrEntity.playsNumber).append(AIOConstants.SEPERATOR_BYTE_2);
      }

      if (userSize > 0) {
        sb.deleteCharAt(sb.length() - 1);
      }

      resalbum.setSuccess(sb.toString());
      aResPkg.addMessage(resalbum);

    } catch (Exception ex) {
      mLog.error(ex.getMessage(), ex);
      resalbum.setFailure("co loi xay ra");
      aResPkg.addMessage(resalbum);
    } //        catch(BusinessException ex)
    //        {
    //            mLog.warn(ex.getMessage());
    //            resalbum.setFailure(ex.getMessage());
    //
    //        }
    finally {
      //            if (resalbum!= null)
      //            {
      //                try {
      //                    aSession.write(resalbum);
      //                } catch (ServerException ex) {
      //                    mLog.error(ex.getMessage(), ex);
      //                }
      //
      //            }
    }
    return 1;
  }
}
コード例 #3
0
public class XESendPrivateMessageJSON implements IMessageProtocol {

  private final Logger mLog =
      LoggerContext.getLoggerFactory().getLogger(XESendPrivateMessageJSON.class);

  @Override
  public boolean decode(Object aEncodedObj, IRequestMessage aDecodingObj) throws ServerException {
    try {
      JSONObject jsonData = (JSONObject) aEncodedObj;
      XESendPrivateMessageRequest rq = (XESendPrivateMessageRequest) aDecodingObj;

      String[] arr = jsonData.getString("v").split(AIOConstants.SEPERATOR_BYTE_1);

      if (arr.length > 0) {
        rq.setToUserId(Long.valueOf(arr[0]));
      }

      if (arr.length > 1) {
        rq.setTitle(arr[1]);
      }

      if (arr.length > 2) {
        rq.setContent(arr[2]);
      }

      return true;
    } catch (Throwable t) {
      mLog.error("[DECODER] " + aDecodingObj.getID(), t);
      return false;
    }
  }

  @Override
  public Object encode(IResponseMessage aResponseMessage) throws ServerException {
    try {
      JSONObject encodingObj = new JSONObject();

      XESendPrivateMessageResponse res = (XESendPrivateMessageResponse) aResponseMessage;
      StringBuilder sb = new StringBuilder();
      sb.append(Integer.toString(aResponseMessage.getID())).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(Integer.toString(res.mCode)).append(AIOConstants.SEPERATOR_NEW_MID);
      sb.append(res.getMessage());

      encodingObj.put("v", sb.toString());
      return encodingObj;
    } catch (Throwable t) {
      mLog.error("[ENCODER] " + aResponseMessage.getID(), t);
      return null;
    }
  }
}
コード例 #4
0
/** @author tuanda */
public class GetNewestBlogJSON implements IMessageProtocol {

  private final Logger mLog = LoggerContext.getLoggerFactory().getLogger(GetNewestBlogJSON.class);

  public boolean decode(Object aEncodedObj, IRequestMessage aDecodingObj) throws ServerException {
    try {
      JSONObject jsonData = (JSONObject) aEncodedObj;
      GetNewestBlogRequest blogRequest = (GetNewestBlogRequest) aDecodingObj;

      String v = jsonData.getString("v");
      String[] args = v.split(AIOConstants.SEPERATOR_BYTE_1);

      blogRequest.size = Integer.parseInt(args[1]);
      blogRequest.page = Integer.parseInt(args[0]);

      return true;
    } catch (JSONException ex) {
      mLog.error(ex.getMessage(), ex);
    }
    return true;
  }

  public Object encode(IResponseMessage aResponseMessage) throws ServerException {
    try {
      JSONObject encodingObj = new JSONObject();

      GetNewestBlogResponse res = (GetNewestBlogResponse) aResponseMessage;

      StringBuilder sb = new StringBuilder();
      sb.append(Integer.toString(aResponseMessage.getID())).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(Integer.toString(res.mCode)).append(AIOConstants.SEPERATOR_NEW_MID);

      if (res.mCode == ResponseCode.FAILURE) {
        sb.append(res.errMsg);
      } else {
        if (res.value != null && !res.value.equals("")) {
          sb.append(res.value);
        }
      }

      encodingObj.put("v", sb.toString());

      return encodingObj;
    } catch (JSONException ex) {
      mLog.error(ex.getMessage(), ex);
    }

    return null;
  }
}
コード例 #5
0
/** @author ThangTD */
public class XEGetInventoryJSON implements IMessageProtocol {

  private final Logger mLog = LoggerContext.getLoggerFactory().getLogger(XEGetInventoryJSON.class);

  @Override
  public boolean decode(Object paramObject, IRequestMessage paramIRequestMessage)
      throws ServerException {
    return true;
  }

  @Override
  public Object encode(IResponseMessage paramIResponseMessage) throws ServerException {
    try {
      JSONObject encodingObj = new JSONObject();
      XEGetInventoryResponse response = (XEGetInventoryResponse) paramIResponseMessage;

      StringBuilder sb = new StringBuilder();
      sb.append(Integer.toString(paramIResponseMessage.getID()))
          .append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(Integer.toString(response.mCode)).append(AIOConstants.SEPERATOR_NEW_MID);

      if (response.mCode == ResponseCode.SUCCESS) {
        int size = response.itemsList.size();
        if (size != 0) {
          StringBuilder sb1 = new StringBuilder();
          for (int i = 0; i < size; i++) {
            InventoryItemEntity item = response.itemsList.get(i);
            sb1.append(item.getItemCode()).append(AIOConstants.SEPERATOR_BYTE_1);
            sb1.append(item.getName()).append(AIOConstants.SEPERATOR_BYTE_1);
            sb1.append(item.getDescription()).append(AIOConstants.SEPERATOR_BYTE_1);
            sb1.append(item.getQuantity()).append(AIOConstants.SEPERATOR_BYTE_1);
            sb1.append(item.getIsUsable() ? "1" : "0").append(AIOConstants.SEPERATOR_BYTE_2);
          }
          sb1.deleteCharAt(sb1.length() - 1);
          sb.append(sb1);
        }
      }

      encodingObj.put("v", sb);

      return encodingObj;
    } catch (Throwable t) {
      mLog.error("[ENCODER] " + paramIResponseMessage.getID(), t);
      return null;
    }
  }
}
コード例 #6
0
/** @author tuanda */
public class DeleteItemJSON implements IMessageProtocol {

  private final Logger mLog = LoggerContext.getLoggerFactory().getLogger(DeleteItemJSON.class);

  public boolean decode(Object aEncodedObj, IRequestMessage aDecodingObj) throws ServerException {
    try {
      JSONObject jsonData = (JSONObject) aEncodedObj;
      DeleteItemRequest newRequest = (DeleteItemRequest) aDecodingObj;
      String v = jsonData.getString("v");
      String[] arr = v.split(AIOConstants.SEPERATOR_BYTE_1);

      newRequest.systemObjectId = Integer.parseInt(arr[0]);
      newRequest.systemObjectRecordId = Long.parseLong(arr[1]);

      return true;
    } catch (JSONException ex) {
      mLog.error(ex.getMessage(), ex);
      return false;
    }
  }

  public Object encode(IResponseMessage aResponseMessage) throws ServerException {
    try {
      JSONObject encodingObj = new JSONObject();
      // put response data into json object

      // cast response obj
      DeleteItemResponse res = (DeleteItemResponse) aResponseMessage;

      StringBuilder sb = new StringBuilder();
      sb.append(Integer.toString(aResponseMessage.getID())).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(Integer.toString(res.mCode)).append(AIOConstants.SEPERATOR_NEW_MID);

      if (res.mCode == ResponseCode.FAILURE) {
        sb.append(res.mErrorMsg);
      }

      encodingObj.put("v", sb.toString());

      // response encoded obj
      return encodingObj;
    } catch (Throwable t) {
      mLog.error("[ENCODER] " + aResponseMessage.getID(), t);
      return null;
    }
  }
}
コード例 #7
0
/** @author tuanda */
public class DeleteMessageBusiness extends AbstractBusiness {

  private static final Logger mLog =
      LoggerContext.getLoggerFactory().getLogger(DeleteMessageBusiness.class);

  public int handleMessage(ISession aSession, IRequestMessage aReqMsg, IResponsePackage aResPkg) {
    //        mLog.debug("[BET] : Catch  ; " + aSession.getUserName());
    MessageFactory msgFactory = aSession.getMessageFactory();
    DeleteMessageResponse resBet =
        (DeleteMessageResponse) msgFactory.getResponseMessage(aReqMsg.getID());

    try {
      DeleteMessageRequest rqAddComment = (DeleteMessageRequest) aReqMsg;
      MessageDB db = new MessageDB();
      db.deleteMessage(rqAddComment.type, rqAddComment.messageId, aSession.getUID());

      resBet.mCode = ResponseCode.SUCCESS;
      aSession.write(resBet);
      CacheUserInfo cache = new CacheUserInfo();
      cache.deleteCacheMessage(aSession.getUID());

    } catch (Throwable t) {
      // resBet.setFailure(ResponseCode.FAILURE, t.getMessage());
      mLog.error("Process message " + aReqMsg.getID() + " error.", t);
      try {
        resBet.setFailure(ResponseCode.FAILURE, "Co loi xay ra");
        aSession.write(resBet);
      } catch (ServerException ex) {
        // java.util.logging.Logger.getLogger(TurnBusiness.class.getName()).log(Level.SEVERE,
        // null, ex);
      }
    }

    return 1;
  }
}
コード例 #8
0
public class FastPlayJSON implements IMessageProtocol {

  private final Logger mLog = LoggerContext.getLoggerFactory().getLogger(FastPlayJSON.class);

  public boolean decode(Object aEncodedObj, IRequestMessage aDecodingObj) throws ServerException {
    try {
      // request data
      JSONObject jsonData = (JSONObject) aEncodedObj;
      FastPlayRequest fast = (FastPlayRequest) aDecodingObj;

      if (jsonData.has("v")) {
        String params = jsonData.getString("v");
        String[] arrValues = params.split(AIOConstants.SEPERATOR_BYTE_1);

        if (arrValues.length > 0) {
          fast.zoneId = Integer.valueOf(arrValues[0]);
        }
        if (arrValues.length > 1) {
          fast.setLevelId(Integer.valueOf(arrValues[1]));
        } else {
          fast.setLevelId(1);
        }

        return true;
      }

      // plain obj
      // decoding
      fast.zoneId = jsonData.getInt("room_id");
      return true;
    } catch (Throwable t) {
      mLog.error("[DECODER] " + aDecodingObj.getID(), t);
      return false;
    }
  }

  private void getMidEncode(FastPlayResponse fast, JSONObject encodingObj) throws JSONException {
    StringBuilder sb = new StringBuilder();
    sb.append(Integer.toString(MessagesID.FastPlay)).append(AIOConstants.SEPERATOR_BYTE_1);
    sb.append(Integer.toString(fast.mCode)).append(AIOConstants.SEPERATOR_NEW_MID);
    if (fast.mCode == ResponseCode.SUCCESS) {
      sb.append(Long.toString(fast.matchID)).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(Integer.toString(fast.tableID));
    } else {
      sb.append(fast.message);
    }
    encodingObj.put("v", sb.toString());
  }

  public Object encode(IResponseMessage aResponseMessage) throws ServerException {
    try {
      JSONObject encodingObj = new JSONObject();
      FastPlayResponse fast = (FastPlayResponse) aResponseMessage;
      if (fast.session != null
          && fast.session.getByteProtocol() > AIOConstants.PROTOCOL_ADVERTISING) {
        getMidEncode(fast, encodingObj);

        return encodingObj;
      }

      // put response data into json object
      encodingObj.put("mid", aResponseMessage.getID());

      encodingObj.put("code", fast.mCode);
      // System.out.println(" chat.mUsername : "******"error_msg", fast.message);
      } else if (fast.mCode == ResponseCode.SUCCESS) {
        encodingObj.put("match_id", fast.matchID);
        encodingObj.put("nTable", fast.tableID);
      }
      // response encoded obj
      return encodingObj;
    } catch (Throwable t) {
      mLog.error("[ENCODER] " + aResponseMessage.getID(), t);
      return null;
    }
  }
}
コード例 #9
0
public class GetRichestsJSON implements IMessageProtocol {

  private final Logger mLog = LoggerContext.getLoggerFactory().getLogger(GetRichestsJSON.class);

  public boolean decode(Object aEncodedObj, IRequestMessage aDecodingObj) throws ServerException {
    return true;
  }

  private String finalProtocol(GetRichestsResponse getFrientList) {
    StringBuilder sb = new StringBuilder();
    for (UserEntity userEntity : getFrientList.mRichestsList) {
      sb.append(userEntity.mUid).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(userEntity.mUsername).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(userEntity.avatarID).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(userEntity.level).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(userEntity.money).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(userEntity.playsNumber).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(userEntity.mIsMale).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(userEntity.isLogin).append(AIOConstants.SEPERATOR_BYTE_2);
    }
    if (sb.length() > 0) {
      sb.deleteCharAt(sb.length() - 1);
    }
    return sb.toString();
  }

  public Object encode(IResponseMessage aResponseMessage) throws ServerException {
    try {
      JSONObject encodingObj = new JSONObject();

      GetRichestsResponse getRichestsList = (GetRichestsResponse) aResponseMessage;
      if (getRichestsList.session != null
          && getRichestsList.session.getByteProtocol() > AIOConstants.PROTOCOL_ADVERTISING) {
        StringBuilder sb = new StringBuilder();
        sb.append(Integer.toString(aResponseMessage.getID())).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(Integer.toString(getRichestsList.mCode)).append(AIOConstants.SEPERATOR_NEW_MID);
        if (getRichestsList.mCode == ResponseCode.FAILURE) {
          sb.append(getRichestsList.mErrorMsg);
        } else {
          sb.append(finalProtocol(getRichestsList));
        }
        encodingObj.put("v", sb.toString());
        return encodingObj;
      }
      encodingObj.put("mid", aResponseMessage.getID());
      encodingObj.put("code", getRichestsList.mCode);
      if (getRichestsList.mCode == ResponseCode.FAILURE) {
      } else if (getRichestsList.mCode == ResponseCode.SUCCESS) {
        JSONArray arrRooms = new JSONArray();
        if (getRichestsList.mRichestsList != null) {
          for (UserEntity userEntity : getRichestsList.mRichestsList) {
            // with each playing room
            JSONObject jRoom = new JSONObject();
            // attached object
            jRoom.put("username", userEntity.mUsername);
            jRoom.put("uid", userEntity.mUid);
            jRoom.put("avatar", userEntity.avatarID);
            jRoom.put("level", userEntity.level);
            jRoom.put("money", userEntity.money);
            jRoom.put("PlaysNumber", userEntity.playsNumber);
            jRoom.put("sex", userEntity.mIsMale);
            arrRooms.put(jRoom);
          }
        }
        encodingObj.put("frient_list", arrRooms);
      }
      // response encoded obj
      return encodingObj;
    } catch (Throwable t) {
      mLog.error("[ENCODER] " + aResponseMessage.getID(), t);
      return null;
    }
  }
}
コード例 #10
0
ファイル: JoinJSON.java プロジェクト: hungdt138/xeeng_server
/** @author tuanda */
public class JoinJSON implements IMessageProtocol {

  private final Logger mLog = LoggerContext.getLoggerFactory().getLogger(JoinJSON.class);

  @Override
  public boolean decode(Object aEncodedObj, IRequestMessage aDecodingObj) throws ServerException {
    try {
      // request data
      JSONObject jsonData = (JSONObject) aEncodedObj;
      // request messsage
      JoinRequest matchJoin = (JoinRequest) aDecodingObj;

      String[] arrV = jsonData.getString("v").split(AIOConstants.SEPERATOR_BYTE_1);
      matchJoin.mMatchId = Long.parseLong(arrV[0]);
      // jsonData.getLong("v");
      if (arrV.length > 1) {
        matchJoin.matrixSize = Integer.parseInt(arrV[1]);
      }

      return true;

    } catch (Throwable t) {
      mLog.error("[DECODER] " + aDecodingObj.getID(), t);
      return false;
    }
  }

  private void newProtocol(JoinResponse matchJoin, JSONObject encodingObj) throws JSONException {
    StringBuilder sb = new StringBuilder();
    sb.append(Integer.toString(MessagesID.MATCH_JOIN)).append(AIOConstants.SEPERATOR_BYTE_1);
    sb.append(Integer.toString(matchJoin.mCode)).append(AIOConstants.SEPERATOR_NEW_MID);
    if (matchJoin.mCode == ResponseCode.FAILURE) {
      sb.append(matchJoin.mErrorMsg);
    } else {
      sb.append(matchJoin.mMatchId).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(matchJoin.minBet).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(matchJoin.isPlaying ? "1" : "0"); // .append(AIOConstants.SEPERATOR_BYTE_1);
      /*
       * sb.append(matchJoin.roomOwner.id).append(
       * AIOConstants.SEPERATOR_BYTE_1);
       */
      switch (matchJoin.zoneID) {
        case ZoneID.PHOM:
          {
            sb.append(AIOConstants.SEPERATOR_BYTE_1)
                .append(matchJoin.isAn ? "1" : "0")
                .append(AIOConstants.SEPERATOR_BYTE_1);
            sb.append(matchJoin.isTaiGui ? "1" : "0"); // .append(AIOConstants.SEPERATOR_BYTE_1);
            if (matchJoin.isObserve) {
              sb.append(AIOConstants.SEPERATOR_BYTE_1)
                  .append(matchJoin.duty)
                  .append(AIOConstants.SEPERATOR_BYTE_1);
              sb.append(matchJoin.turn).append(AIOConstants.SEPERATOR_BYTE_1);
              sb.append(matchJoin.deck).append(AIOConstants.SEPERATOR_BYTE_1);
              sb.append(matchJoin.currCard);
            }
            sb.append(AIOConstants.SEPERATOR_BYTE_3);
            sb.append(
                phomData(
                    matchJoin,
                    matchJoin.mPlayerPhom,
                    false)); // .append(AIOConstants.SEPERATOR_BYTE_2);
            if (!matchJoin.mWaitingPlayerPhom.isEmpty()) {
              sb.append(AIOConstants.SEPERATOR_BYTE_2)
                  .append(
                      phomData(
                          matchJoin,
                          matchJoin.mWaitingPlayerPhom,
                          true)); // .append(AIOConstants.SEPERATOR_BYTE_1);
            }

            break;
          }
        case ZoneID.TIENLEN:
          {
            sb.append(AIOConstants.SEPERATOR_BYTE_1)
                .append(
                    matchJoin.isHidePoker ? "1" : "0"); // .append(AIOConstants.SEPERATOR_BYTE_1);

            if (matchJoin.isObserve) {
              sb.append(AIOConstants.SEPERATOR_BYTE_1)
                  .append(matchJoin.duty)
                  .append(AIOConstants.SEPERATOR_BYTE_1);
              sb.append(matchJoin.turn).append(AIOConstants.SEPERATOR_BYTE_1);
              sb.append(matchJoin.cards); // .append(AIOConstants.SEPERATOR_BYTE_1);
            }
            sb.append(AIOConstants.SEPERATOR_BYTE_3);
            sb.append(
                tienLenData(
                    matchJoin,
                    matchJoin.mTienLenPlayer,
                    false)); // .append(AIOConstants.SEPERATOR_BYTE_1);
            if (!matchJoin.mWaitingPlayerTienlen.isEmpty()) {
              sb.append(AIOConstants.SEPERATOR_BYTE_2)
                  .append(
                      tienLenData(
                          matchJoin,
                          matchJoin.mWaitingPlayerTienlen,
                          true)); // .append(AIOConstants.SEPERATOR_BYTE_1);
            }
            break;
          }
        case ZoneID.SAM:
          {
            sb.append(AIOConstants.SEPERATOR_BYTE_1).append("0");
            if (matchJoin.isObserve) {
              sb.append(AIOConstants.SEPERATOR_BYTE_1)
                  .append("0")
                  .append(AIOConstants.SEPERATOR_BYTE_1);
              sb.append(matchJoin.turn).append(AIOConstants.SEPERATOR_BYTE_1);
              sb.append(matchJoin.cards); // .append(AIOConstants.SEPERATOR_BYTE_1);
            }
            sb.append(AIOConstants.SEPERATOR_BYTE_3);
            sb.append(samData(matchJoin, matchJoin.mPlayerSam, false));
            if (!matchJoin.mWaitingPlayerSam.isEmpty()) {
              sb.append(AIOConstants.SEPERATOR_BYTE_2)
                  .append(samData(matchJoin, matchJoin.mWaitingPlayerSam, true));
            }
            break;
          }

        case ZoneID.PIKACHU:
        case ZoneID.NEW_BA_CAY:
        case ZoneID.BAU_CUA_TOM_CA:
        case ZoneID.AILATRIEUPHU:

        default:
          {
            sb.append(AIOConstants.SEPERATOR_BYTE_3);
            sb.append(gameData(matchJoin, matchJoin.playing, false));
            if (!matchJoin.waiting.isEmpty()) {
              if (!matchJoin.playing.isEmpty()) {
                sb.append(AIOConstants.SEPERATOR_BYTE_2);
              }
              sb.append(gameData(matchJoin, matchJoin.waiting, true));
            }

            break;
          }
      }

      sb.append(AIOConstants.SEPERATOR_BYTE_3).append(matchJoin.phongID);
      if (matchJoin.zoneID == ZoneID.NEW_BA_CAY) {
        sb.append(AIOConstants.SEPERATOR_BYTE_3);
        sb.append(Long.toString(matchJoin.roomOwner.id));
      }
    }

    encodingObj.put("v", sb.toString());
    // return encodingObj;
  }

  private StringBuilder samData(
      JoinResponse matchJoin, List<? extends SimplePlayer> players, boolean isObserver) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < players.size(); i++) {
      SamPlayer player = (SamPlayer) players.get(i);
      sb.append(player.id).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(player.username).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(player.avatarID).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(player.cash).append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(player.isReady ? "1" : "0").append(AIOConstants.SEPERATOR_BYTE_1);
      sb.append(isObserver ? "1" : "0").append(AIOConstants.SEPERATOR_BYTE_1); //
      sb.append(player.isCai ? "1" : "0");
      if (!isObserver) {
        sb.append(AIOConstants.SEPERATOR_BYTE_1).append(player.playingCardSize());
      }
      if (i < players.size() - 1) {
        sb.append(AIOConstants.SEPERATOR_BYTE_2);
      }
    }

    return sb;
  }

  private StringBuilder tienLenData(
      JoinResponse matchJoin, ArrayList<TienLenPlayer> players, boolean isObserver) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < players.size(); i++) {
      TienLenPlayer player = players.get(i);
      if (player != null) {
        sb.append(player.id).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.username).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.avatarID).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.cash).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.isReady ? "1" : "0").append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(isObserver ? "1" : "0").append(AIOConstants.SEPERATOR_BYTE_1); //
        sb.append(Integer.toString(player.level));

        if (!isObserver) {
          sb.append(AIOConstants.SEPERATOR_BYTE_1).append(player.numHand);
        }
        if (i < players.size() - 1) {
          sb.append(AIOConstants.SEPERATOR_BYTE_2);
        }
      }
    }
    return sb;
  }

  private StringBuilder phomData(
      JoinResponse matchJoin, ArrayList<PhomPlayer> players, boolean isObserver) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < players.size(); i++) {
      PhomPlayer player = players.get(i);
      if (player != null) {
        sb.append(player.id).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.username).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.avatarID).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.cash).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.isReady ? "1" : "0").append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(isObserver ? "1" : "0").append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(Integer.toString(player.level));

        if (!isObserver) {
          sb.append(AIOConstants.SEPERATOR_BYTE_1);
          sb.append(player.cardToString(player.playingCards)).append(AIOConstants.SEPERATOR_BYTE_1);
          sb.append(
              player.cardToString(player.eatingCards)); // .append(AIOConstants.SEPERATOR_BYTE_1);
          if (player.haPhom) {
            sb.append(AIOConstants.SEPERATOR_BYTE_1).append(player.cardToString(player.phoms));
          } else {
            sb.append(AIOConstants.SEPERATOR_BYTE_1).append(0);
          }
        }

        if (i < players.size() - 1) {
          sb.append(AIOConstants.SEPERATOR_BYTE_2);
        }
      }
    }
    return sb;
  }

  private StringBuilder gameData(
      JoinResponse matchJoin, List<? extends SimplePlayer> players, boolean isObserver) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < players.size(); i++) {
      SimplePlayer player = players.get(i);
      //			if (isObserver) {
      //
      //				System.out.println("waiting: " + player.username);
      //			} else {
      //				System.out.println("playing: " + player.username);
      //			}
      if (player != null) {
        sb.append(player.id).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.username).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.avatarID).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.cash).append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(player.isReady ? "1" : "0").append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(isObserver ? "1" : "0").append(AIOConstants.SEPERATOR_BYTE_1);
        sb.append(Integer.toString(player.level));

        if (matchJoin.zoneID == ZoneID.PIKACHU) {
          sb.append(AIOConstants.SEPERATOR_BYTE_1)
              .append(((PikachuPlayer) player).point); // .append(AIOConstants.SEPERATOR_BYTE_1);
        } else if (matchJoin.zoneID == ZoneID.LIENG && matchJoin.isPlaying) {
          sb.append(AIOConstants.SEPERATOR_BYTE_1)
              .append(Integer.toString(((LiengPlayer) player).getTotalRound()));
        }

        // if (i < players.size() - 1)
        sb.append(AIOConstants.SEPERATOR_BYTE_2);
      }
    }

    if (players.size() > 0) {
      sb.deleteCharAt(sb.length() - 1);
    }

    return sb;
  }

  @Override
  public Object encode(IResponseMessage aResponseMessage) throws ServerException {
    try {
      JSONObject encodingObj = new JSONObject();
      JoinResponse matchJoin = (JoinResponse) aResponseMessage;
      newProtocol(matchJoin, encodingObj);
      return encodingObj;
    } catch (Throwable t) {
      mLog.error("[ENCODER] " + aResponseMessage.getID(), t);
      return null;
    }
  }
}
コード例 #11
0
/** @author tuanda */
public class CacheGameInfo extends CacheUserInfo {
  //    private static final String FILE_NAME_SPACE = "file";
  private static final String GAME_NAME_SPACE = "game";
  private static final String TOP_GAME_CACHE_NAME_SPACE = "topG";
  private static final int GAME_TIME_CACHE = 60;
  private static final int TOP_GAME_TIME_CACHE = 300;
  private static final Logger mLog =
      LoggerContext.getLoggerFactory().getLogger(CacheGameInfo.class);

  private static List<UserEntity> getTopGameFromDB(int partnerId, int gameId)
      throws SQLException, Exception {
    UserDB db = new UserDB();
    return db.getTopGame(partnerId, gameId);
  }

  private String getPhongInfoFromGame(int zoneId, boolean isMobile) {
    RoomDB db = new RoomDB();

    List<NRoomEntity> rooms = db.getRooms(zoneId);
    StringBuilder sb = new StringBuilder();
    if (isMobile) {
      if (rooms != null) {
        int roomSize = rooms.size();
        for (int i = 0; i < roomSize; i++) {
          NRoomEntity entity = rooms.get(i);
          int playing;
          if (entity.getPhong() == null) {
            playing = 0;
          } else {
            playing = entity.getPhong().getPlaying();
          }

          sb.append(entity.getId()).append(AIOConstants.SEPERATOR_ELEMENT);
          sb.append(playing).append(AIOConstants.SEPERATOR_ELEMENT);
          sb.append(entity.getLv()).append(AIOConstants.SEPERATOR_ARRAY);
        }
      }

      if (sb.length() > 0) {
        sb.deleteCharAt(sb.length() - 1);
      }
    } else {
      if (rooms != null) {

        int roomSize = rooms.size();
        for (int i = 0; i < roomSize; i++) {
          NRoomEntity entity = rooms.get(i);
          int playing;
          if (entity.getPhong() == null) {
            playing = 0;
          } else {
            playing = entity.getPhong().getPlaying();
          }

          sb.append(entity.getId()).append(AIOConstants.SEPERATOR_BYTE_1);
          sb.append(playing).append(AIOConstants.SEPERATOR_BYTE_1);
          sb.append(entity.getLv()).append(AIOConstants.SEPERATOR_BYTE_2);
        }
      }

      if (sb.length() > 0) {
        sb.deleteCharAt(sb.length() - 1);
      }
    }
    return sb.toString();
  }

  public String getPhongInfo(int zoneId, boolean isMobile) {
    try {
      if (isUseCache) {
        IMemcacheClient client = cachedPool.borrowClient();
        String enity = null;
        try {
          String key = GAME_NAME_SPACE + Integer.toString(zoneId) + (isMobile ? "1" : "0");
          enity = (String) client.get(key);
          if (enity == null) {
            //                    loadFromDatabase++;
            enity = getPhongInfoFromGame(zoneId, isMobile);
            client.set(key, GAME_TIME_CACHE, enity);
          }

        } catch (Exception ex) {
          mLog.error(ex.getMessage(), ex);
        }
        cachedPool.returnClient(client);
        return enity;
      }
    } catch (Exception ex) {
      mLog.error(ex.getMessage(), ex);
    }

    return getPhongInfoFromGame(zoneId, isMobile);
  }

  public List<UserEntity> getTopGame(int partnerId, int gameId) {
    try {
      if (isUseCache) {
        IMemcacheClient client = cachedPool.borrowClient();
        List<UserEntity> enity = null;
        try {
          String key =
              TOP_GAME_CACHE_NAME_SPACE + Integer.toString(partnerId) + Integer.toString(gameId);
          enity = (List<UserEntity>) client.get(key);
          if (enity == null) {
            //                    loadFromDatabase++;
            enity = getTopGameFromDB(partnerId, gameId);
            client.set(key, TOP_GAME_TIME_CACHE, enity);
          }
        } catch (Exception ex) {
          mLog.error(ex.getMessage(), ex);
        }

        cachedPool.returnClient(client);
        return enity;
      }
    } catch (Exception ex) {
      mLog.error(ex.getMessage(), ex);
    }

    try {
      return getTopGameFromDB(partnerId, gameId);
    } catch (Exception ex) {
      mLog.error(ex.getMessage(), ex);
    }

    return null;
  }
}