package com.game.gameServer.io;

import net.sf.json.JSONObject;

/**
 * IO 配置
 *
 * @author hjj2019
 * @since 2015/7/1
 *
 */
public final class IoConf {
    /** 单例对象 */
    public static final IoConf OBJ = new IoConf();
    /** 最大战斗线程数 */
    public int _maxBattleThreadNum = 4;
    /** 最大登陆线程数 */
    public int _maxLoginThreadNum = 8;
    /** 最大玩家或场景线程数 */
    public int _maxGamePlayerOrSceneThreadNum = 4;

    /**
     * 类默认构造器
     *
     */
    private IoConf() {
    }

    /**
     * 从 JSON 对象中读取配置
     *
     * @param jsonObj
     *
     */
    public void readFromJson(JSONObject jsonObj) {
        if (jsonObj == null ||
            jsonObj.isEmpty()) {
            return;
        }

        // 最大战斗线程数量
        this._maxBattleThreadNum = jsonObj.optInt("maxBattleThreadNum", this._maxBattleThreadNum);
        // 最大登陆线程数量
        this._maxLoginThreadNum = jsonObj.optInt("maxLoginThreadNum", this._maxLoginThreadNum);
        // 最大玩家或场景线程数
        this._maxGamePlayerOrSceneThreadNum = jsonObj.optInt("maxGamePlayerOrSceneThreadNum", this._maxGamePlayerOrSceneThreadNum);
    }

    /**
     * 获取战斗线程索引
     *
     * @param bindUId
     * @return
     *
     */
    int getBattleThreadIndex(long bindUId) {
        if (bindUId <= 0) {
            // 如果参数对象为空,
            // 则直接退出!
            return 0;
        } else {
            // 获取余数
            return (int) (bindUId & 0xFFFF) % this._maxBattleThreadNum;
        }
    }

    /**
     * 获取登陆线程索引
     *
     * @param bindUId
     * @return
     *
     */
    int getLoginThreadIndex(long bindUId) {
        if (bindUId <= 0) {
            // 如果参数对象为空,
            // 则直接退出!
            return 0;
        } else {
            // 获取余数
            return (int)(bindUId & 0xFFFF) % this._maxLoginThreadNum;
        }
    }

    /**
     * 获取玩家或场景线程索引
     *
     * @param bindUId
     * @return
     *
     */
    int getPlayerOrSceneThreadIndex(long bindUId) {
        if (bindUId <= 0) {
            // 如果参数对象为空,
            // 则直接退出!
            return 0;
        } else {
            // 获取余数
            return (int)(bindUId & 0xFFFF) % this._maxGamePlayerOrSceneThreadNum;
        }
    }
}

@@ -1374,25 +1374,24 @@
 rn (int)
- 
 (bindUId
  & 0xFFF
@@ -1378,34 +1378,24 @@
 int)(bindUId
- & 0xFFFF)
  %25 this._max
@@ -1401,32 +1401,33 @@
 xBattleThreadNum
+)
 ;%0A        %7D%0A    
@@ -1718,34 +1718,24 @@
 int)(bindUId
- & 0xFFFF)
  %25 this._max
@@ -1740,32 +1740,33 @@
 axLoginThreadNum
+)
 ;%0A        %7D%0A    
@@ -2076,18 +2076,8 @@
 dUId
- & 0xFFFF)
  %25 t
@@ -2110,16 +2110,17 @@
 hreadNum
+)
 ;%0A      

修改 IO 配置;