abstract class Secondary<U> : ProtocolLogic<SignedTransaction>
Abstracted bilateral deal protocol participant that is recipient of initial communication.
Theres a good chance we can push at least some of this logic down into core protocol logic and helper methods etc.
RECEIVING |
object RECEIVING : Step |
RECORDING |
object RECORDING : Step |
SIGNING |
object SIGNING : Step |
SWAPPING_SIGNATURES |
object SWAPPING_SIGNATURES : Step |
VERIFYING |
object VERIFYING : Step |
<init> |
Secondary(otherSide: SingleMessageRecipient, notary: Party, sessionID: Long, progressTracker: ProgressTracker = Secondary.tracker()) Abstracted bilateral deal protocol participant that is recipient of initial communication. |
notary |
val notary: Party |
otherSide |
val otherSide: SingleMessageRecipient |
progressTracker |
open 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 |
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 |
assembleSharedTX |
abstract fun assembleSharedTX(: Handshake<U>): <ERROR CLASS><TransactionBuilder, List<PublicKey>> |
call |
open fun call(): SignedTransaction This is where you fill out your business logic. |
validateHandshake |
abstract fun validateHandshake(handshake: Handshake<U>): Handshake<U> |
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. |
tracker |
fun tracker(): ProgressTracker |
Acceptor |
class Acceptor<T : DealState> : Secondary<T> One side of the protocol for inserting a pre-agreed deal. |
Fixer |
class Fixer<T : FixableDealState> : Secondary<StateRef> One side of the fixing protocol for an interest rate swap, but could easily be generalised further. |