Class MemoryStoreRevisions

  • All Implemented Interfaces:
    Revisions

    public class MemoryStoreRevisions
    extends Object
    implements Revisions
    This is a simple in memory Revisions implementation. It is non blocking and does not support any Revisions.Options.
    • Constructor Detail

      • MemoryStoreRevisions

        public MemoryStoreRevisions()
    • Method Detail

      • getHead

        @NotNull
        public @NotNull RecordId getHead()
        Description copied from interface: Revisions
        Returns the record id of the head state. The returned id is a valid id for a SegmentNodeState.
        Specified by:
        getHead in interface Revisions
        Returns:
        id of the head state
      • getPersistedHead

        @NotNull
        public @NotNull RecordId getPersistedHead()
        Description copied from interface: Revisions
        Returns the persisted to disk record id of the head state. The returned id is a valid id for a SegmentNodeState.
        Specified by:
        getPersistedHead in interface Revisions
        Returns:
        id of the head state
      • setHead

        public boolean setHead​(@NotNull
                               @NotNull RecordId expected,
                               @NotNull
                               @NotNull RecordId head,
                               @NotNull
                               @NotNull Revisions.Option... options)
        Description copied from interface: Revisions
        Atomically set the record id of the current head state to the given head state if the current head state matches the expected value.

        All record ids must be valid ids for SegmentNodeStates.

        The locking behaviour of this method regarding implementation specific.

        Specified by:
        setHead in interface Revisions
        Parameters:
        expected - the expected head for the update to take place
        head - the new head to update to
        options - implementation specific options
        Returns:
        true if the current head was successfully updated, false otherwise.
      • setHead

        public RecordId setHead​(@NotNull
                                @NotNull Function<RecordId,​RecordId> newHead,
                                @NotNull
                                @NotNull Revisions.Option... options)
                         throws InterruptedException
        Not supported: throws UnsupportedOperationException
        Specified by:
        setHead in interface Revisions
        Parameters:
        newHead - function mapping an record id to the record id to which the current head id should be set.
        options - implementation specific options
        Returns:
        the record id of the root node if the current head was successfully updated, null otherwise.
        Throws:
        UnsupportedOperationException - always
        InterruptedException - Blocking implementations may throw this exception whe interrupted.