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);
  }


}