Record Class SessionMemoryEntity.State

Object
Record
akka.javasdk.agent.SessionMemoryEntity.State
Enclosing class:
SessionMemoryEntity

public static record SessionMemoryEntity.State(String sessionId, long maxSizeInBytes, long currentSizeInBytes, List<SessionMessage> messages, SessionMessage.TokenUsage tokenUsage, boolean truncated, long compactionSeqNr) extends Record
  • Constructor Details

    • State

      public State(String sessionId, long maxSizeInBytes, long currentSizeInBytes, List<SessionMessage> messages)
    • State

      public State(String sessionId, long maxSizeInBytes, long currentSizeInBytes, List<SessionMessage> messages, SessionMessage.TokenUsage tokenUsage, boolean truncated, long compactionSeqNr)
      Creates an instance of a State record class.
      Parameters:
      sessionId - the value for the sessionId record component
      maxSizeInBytes - the value for the maxSizeInBytes record component
      currentSizeInBytes - the value for the currentSizeInBytes record component
      messages - the value for the messages record component
      tokenUsage - the value for the tokenUsage record component
      truncated - the value for the truncated record component
      compactionSeqNr - the value for the compactionSeqNr record component
  • Method Details

    • isEmpty

      public boolean isEmpty()
    • withMaxSize

      public SessionMemoryEntity.State withMaxSize(int newMaxSize)
    • addMessage

      public SessionMemoryEntity.State addMessage(SessionMessage message)
    • clear

      public SessionMemoryEntity.State clear()
      Reset the in-memory history on deletion.

      On entity deletion, the entity is kept around for some time before being purged, can still serve reads, and rejects any further persists. After this reset getHistory returns an empty session, so the agent sees no context and never falls back to a chunked journal read. We therefore have nothing to anchor with a journal sequence number here: the compactionSeqNr carried by any prior compaction is no longer relevant on a deleted entity, and is reset to 0 along with the rest of the state.

    • compact

      public SessionMemoryEntity.State compact(long compactedAtSeqNr)
      Reset the in-memory history but record the journal sequence number where compaction took place, so a subsequent chunked read from the journal can skip the events that were superseded by the compaction summary.

      Clears the truncated flag: the compaction summary plus a chunked read from compactedAtSeqNr can rebuild the full history losslessly, so the entity is no longer in a lossy state from the caller's perspective. If the post-compaction history later overflows again, State(java.lang.String, long, long, java.util.List<akka.javasdk.agent.SessionMessage>, akka.javasdk.agent.SessionMessage.TokenUsage, boolean, long) will set truncated back to true.

    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. Reference components are compared with Objects::equals(Object,Object); primitive components are compared with '=='.
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • sessionId

      public String sessionId()
      Returns the value of the sessionId record component.
      Returns:
      the value of the sessionId record component
    • maxSizeInBytes

      public long maxSizeInBytes()
      Returns the value of the maxSizeInBytes record component.
      Returns:
      the value of the maxSizeInBytes record component
    • currentSizeInBytes

      public long currentSizeInBytes()
      Returns the value of the currentSizeInBytes record component.
      Returns:
      the value of the currentSizeInBytes record component
    • messages

      public List<SessionMessage> messages()
      Returns the value of the messages record component.
      Returns:
      the value of the messages record component
    • tokenUsage

      public SessionMessage.TokenUsage tokenUsage()
      Returns the value of the tokenUsage record component.
      Returns:
      the value of the tokenUsage record component
    • truncated

      public boolean truncated()
      Returns the value of the truncated record component.
      Returns:
      the value of the truncated record component
    • compactionSeqNr

      public long compactionSeqNr()
      Returns the value of the compactionSeqNr record component.
      Returns:
      the value of the compactionSeqNr record component