Class PlayerStorage
java.lang.Object
handling.channel.PlayerStorage
單一頻道在線玩家的執行緒安全儲存容器。
以雙層讀寫鎖(mutex/mutex2)維護兩組索引:
以角色名稱(小寫)與角色 ID 雙向查找已登入的 MapleCharacter,
另以第二組鎖管理跨頻道換頻時尚未完成轉移的「待入」角色(PendingCharacter)
與其 CharacterTransfer 資料。
registerPlayer/deregisterPlayer同步更新雙索引並通知World.Find。disconnectAll於頻道關閉時強制登出所有連線。PersistingTask定期透過PingTimer清除過期的待入紀錄。
ChannelServer 與 LoginServer 的
AccountStorage 持有各自的實例。-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal voidbroadcastGMPacket(byte[] data) final voidbroadcastPacket(byte[] data) final voidbroadcastSmegaPacket(byte[] data) final voidderegisterPendingPlayer(int charid) final voidderegisterPendingPlayerByAccountId(int accountId) final voidderegisterPlayer(int idz, String namez) final voidfinal voidfinal voiddisconnectAll(boolean checkGM) final ArrayList<MapleCharacter> final List<MapleCharacter> final MapleCharactergetCharacterById(int id) final MapleCharactergetCharacterByName(String name) final List<CheaterData> final intfinal StringgetOnlinePlayers(boolean byGM) final MapleCharactergetPendingCharacter(int charid) final List<CheaterData> final intfinal voidregisterPendingPlayer(MapleCharacter chr, int playerid) final void
-
Constructor Details
-
PlayerStorage
public PlayerStorage(int channel)
-
-
Method Details
-
getAllCharacters
-
registerPlayer
-
registerPendingPlayer
-
deregisterPlayer
-
deregisterPlayer
-
pendingCharacterSize
public final int pendingCharacterSize() -
deregisterPendingPlayer
public final void deregisterPendingPlayer(int charid) -
deregisterPendingPlayerByAccountId
public final void deregisterPendingPlayerByAccountId(int accountId) -
getPendingCharacter
-
getCharacterByName
-
getCharacterById
-
getConnectedClients
public final int getConnectedClients() -
getCheaters
-
getReports
-
disconnectAll
public final void disconnectAll() -
disconnectAll
public final void disconnectAll(boolean checkGM) -
getOnlinePlayers
-
broadcastPacket
public final void broadcastPacket(byte[] data) -
broadcastSmegaPacket
public final void broadcastSmegaPacket(byte[] data) -
broadcastGMPacket
public final void broadcastGMPacket(byte[] data) -
getAllCharactersThreadSafe
-