Periodically POST current server status to an external WordPress REST endpoint.

19Fields
1Constructors
20Methods
423Lines
Package
com.example.rankingplugin.status
Source
status/WordPressStatusPusher.java
Kind
class
Roles
Web / HTTP非同期 / スケジューラ初期化 / ブートストラップ
このクラスにも章立て解説を追加しています。 自動抽出の一覧だけでなく、下の『重点クラスの詳細解説』で読む順番・内部サブシステム・変更時の注意点まで追えます。 全クラス章立てガイドを見る

クラス説明

Periodically POST current server status to an external WordPress REST endpoint.

This is designed for WordPress/shared hosting where DB connections from the site
to Minecraft servers are inconvenient. WordPress only needs to receive JSON.

責務と見どころ

重点クラスの詳細解説

Periodically POST current server status to an external WordPress REST endpoint.。status パッケージの中でも 423 行規模の中核クラスで、Web 導線・スケジューラが一か所に集まっています。中規模クラス群の中では変更影響が広く、章立てで読む価値が高いため重点解説へ追加しています。

最初に追う読む順番

  1. WordPressStatusPusher
    依存オブジェクトと初期状態を束ね、このクラスが担当するランタイムの前提を固めます。
  2. start
    定期処理や公開 API の起動地点で、外部から見える挙動がここから立ち上がります。
  3. loadServerIconCache
    実体や対象状態を作る段階で、後続フローがどのデータを前提に動くかを掴めます。
  4. stop
    後片付けと停止の出口です。残骸や再ログイン後の不整合はここを確認します。
  5. pushSoon
    pushSoon の主要処理を担当します。
  6. pushOnceSync
    Sync: collect Bukkit data safely, then async send HTTP
  7. collectPayload
    collectPayload の主要処理を担当します。
  8. send
    send の主要処理を担当します。
  9. throttledError
    throttledError の主要処理を担当します。

内部サブシステムの地図

代表フロー詳解

反映・保存・終了の流れ

  1. stop

結果を保持し、必要なら永続化し、最後に掃除まで行う出口です。画面更新だけ合って保存が壊れるケースや残骸が残るケースの確認に向きます。

変更時の注意点

外部接点

主な永続化テーブル

SQL 文字列から抽出できた主要テーブルです。スキーマ変更時の確認用です。

the

フィールド

VisibilityTypeName役割
privateJavaPluginpluginプラグイン本体参照です。
privateScoreServicescoreService関連サービスへの参照です。
privateStringserverIdserverId の状態を保持します。
privateStringserverNameserverName の状態を保持します。
privateStringendpointUrlendpointUrl の状態を保持します。
privateStringtokentoken の状態を保持します。
privatelongperiodSecondsperiodSeconds の状態を保持します。
privateinttimeoutMstimeoutMs の状態を保持します。
privatebooleanimmediateOnJoinQuitimmediateOnJoinQuit の状態を保持します。
privatebooleanincludePlayerListincludePlayerList の状態を保持します。
privatebooleanincludePlayerStatsincludePlayerStats の状態を保持します。
privatebooleanincludeServerIconincludeServerIcon の状態を保持します。
privateintplayerListLimitplayerListLimit の状態を保持します。
privateBukkitTasktimerTask非同期処理やスケジューラ制御に使うハンドルです。
privatelonglastImmediatePushAtlastImmediatePushAt の状態を保持します。
privatelonglastErrorLogAtlastErrorLogAt の状態を保持します。
privateStringcachedServerIconDataUrlキャッシュまたは直近計算結果を保持します。
privateStringcachedServerIconSha1キャッシュまたは直近計算結果を保持します。
privateHttpClientclientclient の状態を保持します。

コンストラクタ / 初期化

Signature説明主要呼び出し
public WordPressStatusPusher( JavaPlugin plugin, ScoreService scoreService, String serverId, String serverName, String endpointUrl, String token, long periodSeconds, int timeoutMs, boolean immediateOnJoinQuit, boolean includePlayerList, boolean includePlayerStats, boolean includeServerIcon, int playerListLimit )依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。safeStr → max → min → newBuilder → connectTimeout → ofMillis

メソッド索引

NameVisibilityKind説明
WordPressStatusPusherpublicコンストラクタ依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
startpublicメソッドonEnable から呼ぶ
stoppublicメソッド動作中の処理やリソースを安全に停止・解放します。
pushSoonprivateメソッドpushSoon の主要処理を担当します。
pushOnceSyncprivateメソッドSync: collect Bukkit data safely, then async send HTTP
collectPayloadprivateメソッドcollectPayload の主要処理を担当します。
sendprivateメソッドsend の主要処理を担当します。
throttledErrorprivateメソッドthrottledError の主要処理を担当します。
loadServerIconCacheprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
findServerIconFileprivateメソッド必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
sha1Hexprivateメソッドsha1Hex の主要処理を担当します。
toJsonprivateメソッドtoJson の主要処理を担当します。
addprivateメソッドadd の主要処理を担当します。
addprivateメソッドadd の主要処理を担当します。
addprivateメソッドadd の主要処理を担当します。
addprivateメソッドadd の主要処理を担当します。
addprivateメソッドadd の主要処理を担当します。
escapeprivateメソッドescape の主要処理を担当します。
safeStrprivateメソッドsafeStr の主要処理を担当します。
safeMinecraftVersionprivateメソッドsafeMinecraftVersion の主要処理を担当します。

メソッド詳細

WordPressStatusPusher

コンストラクタpublic
public WordPressStatusPusher( JavaPlugin plugin, ScoreService scoreService, String serverId, String serverName, String endpointUrl, String token, long periodSeconds, int timeoutMs, boolean immediateOnJoinQuit, boolean includePlayerList, boolean includePlayerStats, boolean includeServerIcon, int playerListLimit )

依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。

引数

throws

なし

主要な呼び出し順

safeStrmaxminnewBuilderconnectTimeoutofMillisversionbuild

start

メソッドpublic
public void start()

onEnable から呼ぶ

引数

throws

なし

主要な呼び出し順

pushOnceSyncgetServergetSchedulerrunTaskTimergetPluginManagerregisterEventsonJoinpushSoon

stop

メソッドpublic
public void stop()

動作中の処理やリソースを安全に停止・解放します。

引数

throws

なし

主要な呼び出し順

cancel

pushSoon

メソッドprivate
private void pushSoon()

pushSoon の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

currentTimeMillisgetServergetSchedulerrunTask

pushOnceSync

メソッドprivate
private void pushOnceSync()

Sync: collect Bukkit data safely, then async send HTTP

引数

throws

なし

主要な呼び出し順

collectPayloadtoJsongetServergetSchedulerrunTaskAsynchronouslysend

collectPayload

メソッドprivate
private Payload collectPayload()

collectPayload の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getOnlinePlayerssizegetMaxPlayersgetRuntimemaxMemorytotalMemoryfreeMemorygetOperatingSystemMXBean

send

メソッドprivate
private void send(String json)

send の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

newBuilderuricreatetimeoutofMillisheaderofStringbuild

throttledError

メソッドprivate
private void throttledError(String msg)

throttledError の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

currentTimeMillisgetLoggerwarning

loadServerIconCache

メソッドprivate
private void loadServerIconCache()

必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

引数

throws

なし

主要な呼び出し順

findServerIconFileisFilereadAllBytestoPathgetEncoderencodeToStringsha1HexgetLogger

findServerIconFile

メソッドprivate
private File findServerIconFile()

必要な状態を取得し、呼び出し側で利用しやすい形へ返します。

引数

throws

なし

主要な呼び出し順

isFilegetDataFoldergetParentFile

sha1Hex

メソッドprivatestatic
private static String sha1Hex(byte[] bytes)

sha1Hex の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getInstancedigestappendformattoString

toJson

メソッドprivatestatic
private static String toJson(Payload p)

toJson の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

appendescapenamescoreranktoString

add

メソッドprivatestatic
private static void add(StringBuilder sb, String k, String v)

add の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

appendescape

add

メソッドprivatestatic
private static void add(StringBuilder sb, String k, long v)

add の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

appendescape

add

メソッドprivatestatic
private static void add(StringBuilder sb, String k, int v)

add の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

appendescape

add

メソッドprivatestatic
private static void add(StringBuilder sb, String k, boolean v)

add の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

appendescape

add

メソッドprivatestatic
private static void add(StringBuilder sb, String k, Double v)

add の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

appendescapeisNaNisInfiniteformat

escape

メソッドprivatestatic
private static String escape(String s)

escape の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

lengthcharAtappendformattoString

safeStr

メソッドprivatestatic
private static String safeStr(String s)

safeStr の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

目立つ内部呼び出しは抽出されませんでした。

safeMinecraftVersion

メソッドprivatestatic
private static String safeMinecraftVersion()

safeMinecraftVersion の主要処理を担当します。

引数

throws

なし

主要な呼び出し順

getBukkitVersionisEmptyindexOfsubstringgetVersioncompilematcherfind

代表的な処理フロー

  1. 初期化フロー
    WordPressStatusPusher → safeStr → max → min → newBuilder → connectTimeout
    依存オブジェクトや初期状態を受け取り、このクラスの動作を開始できる状態へ組み立てます。
  2. start フロー
    start → pushOnceSync → getServer → getScheduler → runTaskTimer → getPluginManager
    onEnable から呼ぶ
  3. loadServerIconCache フロー
    loadServerIconCache → findServerIconFile → isFile → readAllBytes → toPath → getEncoder
    必要な状態を取得し、呼び出し側で利用しやすい形へ返します。
  4. stop フロー
    stop → cancel
    動作中の処理やリソースを安全に停止・解放します。
  5. collectPayload フロー
    collectPayload → getOnlinePlayers → size → getMaxPlayers → getRuntime → maxMemory
    collectPayload の主要処理を担当します。
  6. safeMinecraftVersion フロー
    safeMinecraftVersion → getBukkitVersion → isEmpty → indexOf → substring → getVersion
    safeMinecraftVersion の主要処理を担当します。

外部との接点

Web ルート

このクラス内に目立つ Web ルート定義は見つかりませんでした。

SQL / テーブル

the

関連クラス

補足