Class PlayerStorage

java.lang.Object
handling.channel.PlayerStorage

public class PlayerStorage extends Object
單一頻道在線玩家的執行緒安全儲存容器。

以雙層讀寫鎖(mutex/mutex2)維護兩組索引: 以角色名稱(小寫)與角色 ID 雙向查找已登入的 MapleCharacter, 另以第二組鎖管理跨頻道換頻時尚未完成轉移的「待入」角色(PendingCharacter) 與其 CharacterTransfer 資料。

  • registerPlayer/deregisterPlayer 同步更新雙索引並通知 World.Find
  • disconnectAll 於頻道關閉時強制登出所有連線。
  • PersistingTask 定期透過 PingTimer 清除過期的待入紀錄。
ChannelServerLoginServerAccountStorage 持有各自的實例。
  • Constructor Details

    • PlayerStorage

      public PlayerStorage(int channel)
  • Method Details

    • getAllCharacters

      public final ArrayList<MapleCharacter> getAllCharacters()
    • registerPlayer

      public final void registerPlayer(MapleCharacter chr)
    • registerPendingPlayer

      public final void registerPendingPlayer(MapleCharacter chr, int playerid)
    • deregisterPlayer

      public final void deregisterPlayer(MapleCharacter chr)
    • deregisterPlayer

      public final void deregisterPlayer(int idz, String namez)
    • pendingCharacterSize

      public final int pendingCharacterSize()
    • deregisterPendingPlayer

      public final void deregisterPendingPlayer(int charid)
    • deregisterPendingPlayerByAccountId

      public final void deregisterPendingPlayerByAccountId(int accountId)
    • getPendingCharacter

      public final MapleCharacter getPendingCharacter(int charid)
    • getCharacterByName

      public final MapleCharacter getCharacterByName(String name)
    • getCharacterById

      public final MapleCharacter getCharacterById(int id)
    • getConnectedClients

      public final int getConnectedClients()
    • getCheaters

      public final List<CheaterData> getCheaters()
    • getReports

      public final List<CheaterData> getReports()
    • disconnectAll

      public final void disconnectAll()
    • disconnectAll

      public final void disconnectAll(boolean checkGM)
    • getOnlinePlayers

      public final String getOnlinePlayers(boolean byGM)
    • broadcastPacket

      public final void broadcastPacket(byte[] data)
    • broadcastSmegaPacket

      public final void broadcastSmegaPacket(byte[] data)
    • broadcastGMPacket

      public final void broadcastGMPacket(byte[] data)
    • getAllCharactersThreadSafe

      public final List<MapleCharacter> getAllCharactersThreadSafe()