com.r3corda.core.testing / InMemoryWalletService

InMemoryWalletService

open class InMemoryWalletService : SingletonSerializeAsToken, WalletService

This class implements a simple, in memory wallet that tracks states that are owned by us, and also has a convenience method to auto-generate some self-issued cash states that can be used for test trading. A real wallet would persist states relevant to us into a database and once such a wallet is implemented, this scaffolding can be removed.



Exceptions

ClashingThreads class ClashingThreads : Exception

Constructors

<init> InMemoryWalletService(services: ServiceHub)

This class implements a simple, in memory wallet that tracks states that are owned by us, and also has a convenience method to auto-generate some self-issued cash states that can be used for test trading. A real wallet would persist states relevant to us into a database and once such a wallet is implemented, this scaffolding can be removed.

Properties

currentWallet open val currentWallet: Wallet

Returns a read-only snapshot of the wallet at the time the call is made. Note that if you consume states or keys in this wallet, you must inform the wallet service so it can update its internal state.

linearHeads open val linearHeads: Map<SecureHash, StateAndRef<LinearState>>

Returns a snapshot of the heads of LinearStates

updates open val updates: <ERROR CLASS><Update>

Get a synchronous Observable of updates. When observations are pushed to the Observer, the Wallet will already incorporate the update.

Functions

notifyAll open fun notifyAll(txns: Iterable<WireTransaction>): Wallet

Possibly update the wallet by marking as spent states that these transactions consume, and adding any relevant new states that they create. You should only insert transactions that have been successfully verified here

Inherited Functions

linearHeadsOfType_ open fun <T : LinearState> linearHeadsOfType_(stateType: Class<T>): Map<SecureHash, StateAndRef<T>>

Returns the linearHeads only when the type of the state would be considered an instanceof the given type.

notify open fun notify(tx: WireTransaction): Wallet

Same as notifyAll but with a single transaction.

statesForRefs open fun statesForRefs(refs: List<StateRef>): Map<StateRef, TransactionState<*>?>
toToken open fun toToken(context: SerializeAsTokenContext): SerializationToken
whenConsumed open fun whenConsumed(ref: StateRef): <ERROR CLASS><Update>

Provide a Future for when a StateRef is consumed, which can be very useful in building tests.

Companion Object Properties

clashingThreads val Wallet.clashingThreads: Set<SecureHash>

Extension Functions

linearHeadsOfType fun <T : LinearState> WalletService.linearHeadsOfType(): <ERROR CLASS>

Inheritors

NodeWalletService class NodeWalletService : InMemoryWalletService

Currently, the node wallet service is just the in-memory wallet service until we have finished evaluating and selecting a persistence layer (probably an ORM over a SQL DB).