SHA256
Добавлен временный debug API для автотеста WebRTC и runbook
This commit is contained in:
+8
@@ -145,6 +145,14 @@ public final class ActiveConnectionsRegistry {
|
||||
return (set == null) ? Set.of() : set; // CopyOnWriteArraySet можно отдавать как есть
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Снимок всех активных контекстов на текущий момент.
|
||||
*/
|
||||
public Set<ConnectionContext> getAllConnectionsSnapshot() {
|
||||
return Set.copyOf(bySessionId.values());
|
||||
}
|
||||
|
||||
private static String toLoginKey(String login) {
|
||||
return login.trim().toLowerCase(Locale.ROOT);
|
||||
}
|
||||
|
||||
+6
-2
@@ -72,8 +72,10 @@ import server.logic.ws_protocol.JSON.messages.entyties.Net_UpsertPushToken_Reque
|
||||
// --- NEW: Ping ---
|
||||
import server.logic.ws_protocol.JSON.handlers.system.Net_GetServerInfo_Handler;
|
||||
import server.logic.ws_protocol.JSON.handlers.system.Net_ClientErrorLog_Handler;
|
||||
import server.logic.ws_protocol.JSON.handlers.system.Net_ClientDebugLog_Handler;
|
||||
import server.logic.ws_protocol.JSON.handlers.system.Net_Ping_Handler;
|
||||
import server.logic.ws_protocol.JSON.handlers.system.entyties.Net_ClientErrorLog_Request;
|
||||
import server.logic.ws_protocol.JSON.handlers.system.entyties.Net_ClientDebugLog_Request;
|
||||
import server.logic.ws_protocol.JSON.handlers.system.entyties.Net_GetServerInfo_Request;
|
||||
import server.logic.ws_protocol.JSON.handlers.system.entyties.Net_Ping_Request;
|
||||
|
||||
@@ -131,7 +133,8 @@ public final class JsonHandlerRegistry {
|
||||
// --- system ---
|
||||
Map.entry("Ping", new Net_Ping_Handler()),
|
||||
Map.entry("GetServerInfo", new Net_GetServerInfo_Handler()),
|
||||
Map.entry("ClientErrorLog", new Net_ClientErrorLog_Handler())
|
||||
Map.entry("ClientErrorLog", new Net_ClientErrorLog_Handler()),
|
||||
Map.entry("ClientDebugLog", new Net_ClientDebugLog_Handler())
|
||||
|
||||
// --- subscriptions ---
|
||||
// Map.entry("ListSubscribedChannels", new Net_GetSubscribedChannels_Handler())
|
||||
@@ -179,7 +182,8 @@ public final class JsonHandlerRegistry {
|
||||
// --- system ---
|
||||
Map.entry("Ping", Net_Ping_Request.class),
|
||||
Map.entry("GetServerInfo", Net_GetServerInfo_Request.class),
|
||||
Map.entry("ClientErrorLog", Net_ClientErrorLog_Request.class)
|
||||
Map.entry("ClientErrorLog", Net_ClientErrorLog_Request.class),
|
||||
Map.entry("ClientDebugLog", Net_ClientDebugLog_Request.class)
|
||||
);
|
||||
|
||||
private JsonHandlerRegistry() { }
|
||||
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package server.logic.ws_protocol.JSON.handlers.system;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.debug.DebugRunLogBuffer;
|
||||
import server.logic.ws_protocol.JSON.ConnectionContext;
|
||||
import server.logic.ws_protocol.JSON.entyties.Net_Request;
|
||||
import server.logic.ws_protocol.JSON.entyties.Net_Response;
|
||||
import server.logic.ws_protocol.JSON.handlers.JsonMessageHandler;
|
||||
import server.logic.ws_protocol.JSON.handlers.system.entyties.Net_ClientDebugLog_Request;
|
||||
import server.logic.ws_protocol.JSON.handlers.system.entyties.Net_ClientDebugLog_Response;
|
||||
import server.logic.ws_protocol.JSON.utils.NetExceptionResponseFactory;
|
||||
import server.logic.ws_protocol.WireCodes;
|
||||
|
||||
public class Net_ClientDebugLog_Handler implements JsonMessageHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(Net_ClientDebugLog_Handler.class);
|
||||
|
||||
@Override
|
||||
public Net_Response handle(Net_Request baseRequest, ConnectionContext ctx) {
|
||||
Net_ClientDebugLog_Request req = (Net_ClientDebugLog_Request) baseRequest;
|
||||
String message = safe(req.getMessage());
|
||||
if (message.isBlank()) {
|
||||
return NetExceptionResponseFactory.error(req, WireCodes.Status.BAD_REQUEST, "BAD_FIELDS", "Поле message обязательно");
|
||||
}
|
||||
|
||||
String runId = safe(req.getRunId());
|
||||
String level = safe(req.getLevel());
|
||||
String sessionId = safe(ctx != null ? ctx.getSessionId() : "");
|
||||
String login = safe(ctx != null ? ctx.getLogin() : "");
|
||||
String details = safe(req.getDetails());
|
||||
|
||||
DebugRunLogBuffer.getInstance().add(level, runId, "client", sessionId, login, message, details);
|
||||
|
||||
log.info("CLIENT_DEBUG runId={} level={} login={} sessionId={} message={} details={}",
|
||||
runId, level, login, sessionId, message, details);
|
||||
|
||||
Net_ClientDebugLog_Response resp = new Net_ClientDebugLog_Response();
|
||||
resp.setOp(req.getOp());
|
||||
resp.setRequestId(req.getRequestId());
|
||||
resp.setStatus(WireCodes.Status.OK);
|
||||
resp.setAccepted(true);
|
||||
resp.setServerTs(System.currentTimeMillis());
|
||||
return resp;
|
||||
}
|
||||
|
||||
private static String safe(String value) {
|
||||
return value == null ? "" : value.trim();
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package server.logic.ws_protocol.JSON.handlers.system.entyties;
|
||||
|
||||
import server.logic.ws_protocol.JSON.entyties.Net_Request;
|
||||
|
||||
public class Net_ClientDebugLog_Request extends Net_Request {
|
||||
private String runId;
|
||||
private String level;
|
||||
private String message;
|
||||
private String details;
|
||||
|
||||
public String getRunId() { return runId; }
|
||||
public void setRunId(String runId) { this.runId = runId; }
|
||||
|
||||
public String getLevel() { return level; }
|
||||
public void setLevel(String level) { this.level = level; }
|
||||
|
||||
public String getMessage() { return message; }
|
||||
public void setMessage(String message) { this.message = message; }
|
||||
|
||||
public String getDetails() { return details; }
|
||||
public void setDetails(String details) { this.details = details; }
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package server.logic.ws_protocol.JSON.handlers.system.entyties;
|
||||
|
||||
import server.logic.ws_protocol.JSON.entyties.Net_Response;
|
||||
|
||||
public class Net_ClientDebugLog_Response extends Net_Response {
|
||||
private boolean accepted;
|
||||
private long serverTs;
|
||||
|
||||
public boolean isAccepted() { return accepted; }
|
||||
public void setAccepted(boolean accepted) { this.accepted = accepted; }
|
||||
|
||||
public long getServerTs() { return serverTs; }
|
||||
public void setServerTs(long serverTs) { this.serverTs = serverTs; }
|
||||
}
|
||||
Reference in New Issue
Block a user