Class ServerPropertiesManager
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classOutcome of oneset_allbatch.private static enumWhat actually happened to one key. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionapplySetAll(com.google.gson.JsonObject values) Apply a batch of properties, report it over the socket, and hand the outcome back.private com.google.gson.JsonObjectprivate voidvoidhandleServerProperties(com.google.gson.JsonObject data) Handle WebSocket message for server properties operations.private voidhandleSet(com.google.gson.JsonObject data) private voidhandleSetAll(com.google.gson.JsonObject data) private voidsendResponse(com.google.gson.JsonObject response) booleansetProperty(String key, String value) voidprivate static com.google.gson.JsonArraytoJsonArray(List<String> keys) private voidThe response above is what the panel reads; this is what a server operator reads.writeProperty(String key, String value) Why this exists next tosetProperty(String, String): the boolean is lossy.
-
Field Details
-
serverRoot
-
webSocketClient
-
SAFE_KEYS
-
-
Constructor Details
-
ServerPropertiesManager
-
-
Method Details
-
setWebSocketClient
-
getSafeProperties
-
setProperty
-
writeProperty
Why this exists next tosetProperty(String, String): the boolean is lossy. Afalsecould mean "the key is not on the whitelist", "there is no server.properties to write to", or "the write itself failed" — three situations with three different fixes, collapsed into one value. The batch path has to tell the caller which one happened, so the real outcome is produced here andsetPropertykeeps its original contract by narrowing it.为什么要在
setProperty(String, String)旁边多这一个:那个布尔值是有损的。false可能是「键不在白名单」「没有 server.properties 可写」或「写入本身失败」, 三种处置完全不同的情况被压成了同一个值。批量路径必须告诉调用方是哪一种, 所以真实结果在这里产生,setProperty通过收窄它来保持原有契约。 -
handleServerProperties
public void handleServerProperties(com.google.gson.JsonObject data) Handle WebSocket message for server properties operations.- Parameters:
data- the message data
-
handleGet
private void handleGet() -
handleSet
private void handleSet(com.google.gson.JsonObject data) -
handleSetAll
private void handleSetAll(com.google.gson.JsonObject data) -
applySetAll
Apply a batch of properties, report it over the socket, and hand the outcome back.The return value is the point.
handleSetAlldoes not need it — it only ever builds a message — butupdate_configwithfileName: server_propertiesroutes through here too, and itsconfig_update_responseis supposed to distinguish "delivered" from "took effect". Before this returned anything, that path had no way to learn the answer and reported success unconditionally.应用一批属性、把结果发回面板,并把结果交还给调用方。 返回值才是重点:
handleSetAll用不到它(它只负责拼一条消息), 但fileName: server_properties的update_config也走这里, 而它的config_update_response要区分「已下发」和「已生效」。 在这个方法有返回值之前,那条路径没有任何途径知道答案,只能无条件报成功。- Parameters:
values- key → value, an explicit JSON null meaning "leave this key alone"- Returns:
- what happened to each key
-
buildSetAllResponse
-
toJsonArray
-
warnIfIncomplete
The response above is what the panel reads; this is what a server operator reads. Both are needed: someone changing a setting that silently does not apply otherwise finds nothing on either side.上面那条响应是给面板读的,这条是给服主读的。两边都要有: 否则改了个设置没生效的人,面板和服务器日志两头都查不到原因。
-
sendResponse
private void sendResponse(com.google.gson.JsonObject response)
-