home /
connvers /
src /
main /
java /
avividi /
connvers /
protocol /
Message.java
Message.java
package avividi.connvers.protocol;
import java.time.Instant;
import static avividi.connvers.Connvers.*;
import static avividi.connvers.Connvers.SERVER_USER;
import static avividi.connvers.Connvers.printLine;
public record Message(String user, Instant time, MessageTopic topic, String content) {
public static String PROTOCOL_NAME = "connvers-protocol-v1";
public Message withTime(Instant time) {
return new Message(user, time, topic, content);
}
public void print() {
if (topic != MessageTopic.say && topic != MessageTopic.error) {
throw new IllegalStateException();
}
String c = topic == MessageTopic.error ? "error: " + content : content;
MessagePrintType type = user.equals(SERVER_USER)
? MessagePrintType.server
: MessagePrintType.user;
printLine(type, time, user, c);
}
}