content: package pl.allegro.tech.hermes.frontend.publishing.handlers;
  
  import io.undertow.util.AttachmentKey;
  import pl.allegro.tech.hermes.api.Topic;
  import pl.allegro.tech.hermes.frontend.metric.CachedTopic;
  import pl.allegro.tech.hermes.frontend.publishing.message.Message;
  import pl.allegro.tech.hermes.frontend.publishing.message.MessageState;
  
  public class AttachmentContent {
  
    public static final AttachmentKey<AttachmentContent> KEY =
        AttachmentKey.create(AttachmentContent.class);
  
    private final CachedTopic cachedTopic;
    private final MessageState messageState;
    private final String messageId;
    private byte[] messageContent;
    private volatile TimeoutHolder timeoutHolder;
    private volatile Message message;
    private volatile boolean responseReady;
  
    public Message getMessage() {
      return message;
    }
  
    AttachmentContent(CachedTopic cachedTopic, MessageState messageState, String messageId) {
      this.cachedTopic = cachedTopic;
      this.messageState = messageState;
      this.messageId = messageId;
    }
  
    public MessageState getMessageState() {
      return messageState;
    }
  
    public TimeoutHolder getTimeoutHolder() {
      return timeoutHolder;
    }
  
    public void removeTimeout() {
      timeoutHolder.remove();
    }
  
    public void setTimeoutHolder(TimeoutHolder timeoutHolder) {
      this.timeoutHolder = timeoutHolder;
    }
  
    public Topic getTopic() {
      return cachedTopic.getTopic();
    }
  
    public CachedTopic getCachedTopic() {
      return cachedTopic;
    }
  
    public void setMessageContent(byte[] messageContent) {
      this.messageContent = messageContent;
    }
  
    public String getMessageId() {
      return messageId;
    }
  
    public byte[] getMessageContent() {
      return messageContent;
    }
  
    public void setMessage(Message message) {
      this.message = message;
    }
  
    public boolean isResponseReady() {
      return responseReady;
    }
  
    public void markResponseAsReady() {
      responseReady = true;
    }
  }
  