abstract class Primary<U> : ProtocolLogic<SignedTransaction>Abstracted bilateral deal protocol participant that initiates communication/handshake.
Theres a good chance we can push at least some of this logic down into core protocol logic and helper methods etc.
| AWAITING_PROPOSAL |
object AWAITING_PROPOSAL : Step |
| COPYING_TO_REGULATOR |
object COPYING_TO_REGULATOR : Step |
| NOTARY |
object NOTARY : Step |
| RECORDING |
object RECORDING : Step |
| SENDING_SIGS |
object SENDING_SIGS : Step |
| SIGNING |
object SIGNING : Step |
| VERIFYING |
object VERIFYING : Step |
| <init> |
Primary(payload: U, otherSide: SingleMessageRecipient, otherSessionID: Long, myKeyPair: KeyPair, notaryNode: NodeInfo, progressTracker: ProgressTracker = Primary.tracker())Abstracted bilateral deal protocol participant that initiates communication/handshake. |
| myKeyPair |
val myKeyPair: KeyPair |
| notaryNode |
val notaryNode: NodeInfo |
| otherSessionID |
val otherSessionID: Long |
| otherSide |
val otherSide: SingleMessageRecipient |
| payload |
val payload: U |
| progressTracker |
open val progressTracker: ProgressTrackerOverride 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. |
| 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: ServiceHubProvides access to big, heavy classes that may be reconstructed from time to time, e.g. across restarts |
| call |
open fun call(): SignedTransactionThis is where you fill out your business logic. |
| getPartialTransaction |
fun getPartialTransaction(): UntrustworthyData<SignedTransaction> |
| signWithOurKey |
open fun signWithOurKey(partialTX: SignedTransaction): WithKey |
| verifyPartialTransaction |
fun verifyPartialTransaction(untrustedPartialTX: UntrustworthyData<SignedTransaction>): SignedTransaction |
| receive |
fun <T : Any> receive(topic: String, sessionIDForReceive: Long, clazz: Class<T>): UntrustworthyData<T>fun <T : Any> receive(topic: String, sessionIDForReceive: Long): 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>): RInvokes the given subprotocol by simply passing through this ProtocolLogics reference to the ProtocolStateMachine and then calling the call method. |
| tracker |
fun tracker(): ProgressTracker |
| Floater |
class Floater<T : FixableDealState> : Primary<StateRef>One side of the fixing protocol for an interest rate swap, but could easily be generalised furher |
| Instigator |
class Instigator<T : DealState> : Primary<T>One side of the protocol for inserting a pre-agreed deal. |