InMemoryTransaction

public final class InMemoryTransaction : Transaction

This class represents a transaction for an in-memory database.

  • Undocumented

    Declaration

    Swift

    public let eventLoop: EventLoop
  • The version of the database that the reads for this transaction start from.

    Declaration

    Swift

    public var readVersion: Int64
  • The database we are reading from.

    Declaration

    Swift

    public let database: InMemoryDatabaseConnection
  • Whether we’ve committed this transaction.

    Declaration

    Swift

    public var committed: Bool
  • Whether we’ve cancelled this transaction.

    Declaration

    Swift

    public var cancelled: Bool
  • The version at which we committed this transaction.

    Declaration

    Swift

    public var committedVersion: Int64?
  • This method reads a value from the data store.

    Declaration

    Swift

    public func read(_ key: DatabaseValue, snapshot: Bool) -> EventLoopFuture<DatabaseValue?>

    Parameters

    snapshot

    Whether we should perform a snapshot read.

    Return Value

    The value that we are reading, if any exists.

  • This method finds a key using a key selector.

    Declaration

    Swift

    public func findKey(selector: KeySelector, snapshot: Bool) -> EventLoopFuture<DatabaseValue?>

    Parameters

    selector

    The selector telling us where to find the key.

    snapshot

    Whether we should perform a snapshot read when finding the key.

    Return Value

    The first key matching this selector.

  • This method reads a range of values for a range of keys matching two key selectors.

    The keys included in the result range will be from the first key matching the start key selector to the first key matching the end key selector. The start key will be included in the results, but the end key will not.

    The results will be ordered in lexographic order by their keys.

    This will automatically add a read conflict for the range, so that if any key has changed in this range since the start of this transaction this transaction will not be accepted.

    Declaration

    Swift

    public func readSelectors(from start: KeySelector, to end: KeySelector, limit: Int?, mode: StreamingMode, snapshot: Bool, reverse: Bool) -> EventLoopFuture<ResultSet>

    Parameters

    from

    The key selector for the beginning of the range.

    end

    The key selector for the end of the range.

    limit

    The maximum number of results to return.

    mode

    The streaming mode to use.

    snapshot

    Whether we should perform a snapshot read.

    reverse

    Whether we should return the rows in reverse order.

    Return Value

    A list of rows with the keys and their corresponding values.

  • This method adds a change to the transaction.

    Declaration

    Swift

    public func store(key: DatabaseValue, value: DatabaseValue)

    Parameters

    key

    The key we are changing.

    value

    The new value for the key.

  • This method clears a value in the database.

    Declaration

    Swift

    public func clear(key: DatabaseValue)

    Parameters

    key

    The key to clear.

  • This method clears a range of keys in the database.

    Declaration

    Swift

    public func clear(range: Range<DatabaseValue>)

    Parameters

    start

    The beginning of the range to clear.

    end

    The end of the range to clear. This will not be included in the range.

  • This method adds a read conflict for a key range.

    Declaration

    Swift

    public func addReadConflict(on range: Range<DatabaseValue>)

    Parameters

    range

    The range of keys we are adding the conflict on.

  • This method adds a range of keys that we want to reserve for writing.

    If the system commits this transaction, and another transaction has a read conflict on one of these keys, that second transaction will then fail to commit.

    Declaration

    Swift

    public func addWriteConflict(on range: Range<DatabaseValue>)

    Parameters

    range

    The range of keys to add the conflict on.

  • This method gets the version of the database that this transaction is reading from.

    Declaration

    Swift

    public func getReadVersion() -> EventLoopFuture<Int64>
  • This method gets the version of the database that this transaction should read from.

    Declaration

    Swift

    public func setReadVersion(_ version: Int64)

    Parameters

    version

    The new version.

  • This method gets the version of the database that this transaction committed its changes at.

    If the transaction has not committed, this will return -1.

    Declaration

    Swift

    public func getCommittedVersion() -> EventLoopFuture<Int64>
  • This method resets the transaction to its initial state.

    Declaration

    Swift

    public func reset()
  • This method cancels the transaction, preventing it from being committed and freeing up some associated resources.

    Declaration

    Swift

    public func cancel()
  • This method attempts to retry a transaction after an error.

    If the error is retryable, this will reset the transaction and fire the returned future when the transaction is ready to use again. If the error is not retryable, the returned future will rethrow the error.

    Declaration

    Swift

    public func attemptRetry(error: Error) -> EventLoopFuture<Void>

    Parameters

    error

    The error that the system encountered.

    Return Value

    A future indicating when the transaction is ready again.

  • This method performs an atomic operation against a key and value.

    Declaration

    Swift

    public func performAtomicOperation(operation: MutationType, key: DatabaseValue, value: DatabaseValue)

    Parameters

    operation

    The operation to perform.

    key

    The key to read for the operation.

    value

    The new value to provide to the operation.

  • This method gets a version stamp, which is a key segment containing the committed version of the transaction.

    This can be called before the transaction is committed, and it will only return a value once the transaction is committed.

    Declaration

    Swift

    public func getVersionStamp() -> EventLoopFuture<DatabaseValue>
  • This method sets an option on the transaction.

    Declaration

    Swift

    public func setOption(_ option: TransactionOption, value: DatabaseValue?)

    Parameters

    option

    The option to set.

    value

    The value to set for the option.