Add: Base classes for all responses

This commit is contained in:
Lars Simon Winzer
2026-03-23 15:45:44 +01:00
parent 0f58b4e998
commit eb63f6d39b
3 changed files with 71 additions and 0 deletions
@@ -0,0 +1,32 @@
package ch.unibas.dmi.dbis.cs108.casono.server.network.response;
import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId;
public class ErrorResponse extends Response {
private final String code;
private final String message;
public ErrorResponse(
SessionId sessionId, int requestId, String errorCode, String errorMessage) {
this.sessionId = sessionId;
this.requestId = requestId;
this.code = errorCode;
this.message = errorMessage;
}
public ErrorResponse(SessionId sessionId, int requestId, String errorCode) {
this.sessionId = sessionId;
this.requestId = requestId;
this.code = errorCode;
this.message = null;
}
@Override
public String encode() {
if (message != null && !message.isEmpty()) {
return "-ERR CODE=" + code + " MSG=" + message;
} else {
return "-ERR CODE=" + code;
}
}
}
@@ -0,0 +1,16 @@
package ch.unibas.dmi.dbis.cs108.casono.server.network.response;
import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId;
public abstract class Response implements Encodable {
protected SessionId sessionId;
protected int requestId;
public SessionId getSessionId() {
return sessionId;
}
public int getRequestId() {
return requestId;
}
}
@@ -0,0 +1,23 @@
package ch.unibas.dmi.dbis.cs108.casono.server.network.response;
import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId;
public abstract class SuccessResponse extends Response {
public SuccessResponse(SessionId sessionId, int requestId) {
this.sessionId = sessionId;
this.requestId = requestId;
}
public final String encode() {
String payload = payload();
if (payload.isBlank()) {
return "+OK";
} else {
return "+OK " + payload;
}
}
protected String payload() {
return "";
}
}