com.r3corda.demos.protocols / UpdateBusinessDayProtocol / Updater

# Updater

`class Updater : ProtocolLogic<Boolean>`

### Types

FETCHING | `object FETCHING : Step`
FIXING | `object FIXING : Step`
ITERATING_DEALS | `object ITERATING_DEALS : Step`
ITERATING_FIXINGS | `object ITERATING_FIXINGS : Step`

### Constructors

<init> | `Updater(date: LocalDate, sessionID: Long, progressTracker: ProgressTracker = Updater.tracker())`

### Properties

date | `val date: LocalDate`
progressTracker | `val progressTracker: ProgressTracker` Override this to provide a ProgressTracker. If one is provided and stepped, the framework will do something helpful with the progress reports. If this protocol is invoked as a sub-protocol of another, then the tracker will be made a child of the current step in the parent. If its null, this protocol doesnt track progress.
sessionID | `val sessionID: Long`

### Inherited Properties

logger | `val logger: <ERROR CLASS>` This is where you should log things to.
psm | `lateinit var psm: ProtocolStateMachine<*>` Reference to the Fiber instance that is the top level controller for the entire flow.
serviceHub | `val serviceHub: ServiceHub` Provides access to big, heavy classes that may be reconstructed from time to time, e.g. across restarts

### Functions

call | `fun call(): Boolean` This is where you fill out your business logic.
otherParty | `fun otherParty(deal: DealState): NodeInfo`
processDeal | `fun processDeal(party: NodeInfo, deal: StateAndRef<DealState>, date: LocalDate, sessionID: Long): Unit`
processInterestRateSwap | `fun processInterestRateSwap(party: NodeInfo, deal: StateAndRef<State>, date: LocalDate, sessionID: Long): Unit`

### Inherited Functions

receive | `fun <T : Any> receive(topic: String, sessionIDForReceive: Long): UntrustworthyData<T>` `fun <T : Any> receive(topic: String, sessionIDForReceive: Long, clazz: Class<T>): UntrustworthyData<T>`
send | `fun send(topic: String, destination: MessageRecipients, sessionID: Long, obj: Any): Unit`
sendAndReceive | `fun <T : Any> sendAndReceive(topic: String, destination: MessageRecipients, sessionIDForSend: Long, sessionIDForReceive: Long, obj: Any): UntrustworthyData<T>`
subProtocol | `fun <R> subProtocol(subLogic: ProtocolLogic<R>): R` Invokes the given subprotocol by simply passing through this ProtocolLogics reference to the ProtocolStateMachine and then calling the call method.

### Companion Object Functions

tracker | `fun tracker(): ProgressTracker`