com.digitalasset.canton.participant.protocol.transfer
TransferOutProcessingSteps
Companion object TransferOutProcessingSteps
class TransferOutProcessingSteps extends TransferProcessingSteps[SubmissionParam, SubmissionResult, TransferOutViewType, TransferOutResult] with NamedLogging
- Alphabetic
- By Inheritance
- TransferOutProcessingSteps
- TransferProcessingSteps
- NamedLogging
- ProcessingSteps
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new TransferOutProcessingSteps(domainId: DomainId, participantId: ParticipantId, engine: DAMLe, transferCoordination: TransferCoordination, seedGenerator: SeedGenerator, version: ProtocolVersion, loggerFactory: NamedLoggerFactory)(implicit ec: ExecutionContext)
Type Members
- case class CheckActivenessAndWritePendingContracts(activenessSet: ActivenessSet, pendingContracts: Seq[WithTransactionId[SerializableContract]], pendingDataAndResponseArgs: PendingDataAndResponseArgs) extends Product with Serializable
Phase 3
Phase 3
- activenessSet
The activeness set for the activeness check
- pendingContracts
The pending contracts to be added to the com.digitalasset.canton.participant.store.StoredContractManager, along with the com.digitalasset.canton.protocol.TransactionId that created the contract
- pendingDataAndResponseArgs
The implementation-specific arguments needed to create the pending data and response
- Definition Classes
- ProcessingSteps
- case class CommitAndStoreContractsAndPublishEvent(commitSet: Option[Future[CommitSet]], contractsToBeStored: Set[LfContractId], maybeEvent: Option[TimestampedEvent], update: Option[CausalityUpdate]) extends Product with Serializable
Phase 7, step 3:
Phase 7, step 3:
- commitSet
scala.None$ if the request should be rejected scala.Some$ a future that will produce the commit set for updating the active contract store
- contractsToBeStored
The contracts to be persisted to the contract store. Must be a subset of the contracts produced in Phase 3, step 2 in CheckActivenessAndWritePendingContracts.
- maybeEvent
The event to be published via the com.digitalasset.canton.participant.event.RecordOrderPublisher
- Definition Classes
- ProcessingSteps
- case class DecryptedViews(views: Seq[WithRecipients[DecryptedView]], decryptionErrors: Seq[EncryptedViewMessageDecryptionError[RequestViewType]]) extends Product with Serializable
Phase 3:
Phase 3:
- views
The successfully decrypted views
- decryptionErrors
The decryption errors while trying to decrypt the views
- Definition Classes
- ProcessingSteps
- trait PreparedBatch extends AnyRef
The actual batch to be sent for a TrackedSubmission
The actual batch to be sent for a TrackedSubmission
- Definition Classes
- ProcessingSteps
- case class StorePendingDataAndSendResponseAndCreateTimeout(pendingData: PendingRequestData, mediatorResponses: Seq[(MediatorResponse, Recipients)], causalityMessages: Seq[(CausalityMessage, Recipients)], rejectionArgs: RejectionArgs) extends Product with Serializable
Phase 3:
Phase 3:
- pendingData
The PendingRequestData to be stored until Phase 7
- mediatorResponses
The responses to be sent to the mediator
- rejectionArgs
The implementation-specific arguments needed to create a rejection event on timeout
- Definition Classes
- ProcessingSteps
- sealed trait Submission extends AnyRef
- Definition Classes
- ProcessingSteps
- trait TrackedSubmission extends Submission
Submission to be tracked in-flight and with deduplication.
Submission to be tracked in-flight and with deduplication.
The actual batch to be sent is computed only later by TrackedSubmission.prepareBatch so that tracking information (e.g., the chosen deduplication period) can be incorporated into the batch.
- Definition Classes
- ProcessingSteps
- trait UntrackedSubmission extends Submission
Submission to be sent off without tracking the in-flight submission and without deduplication.
Submission to be sent off without tracking the in-flight submission and without deduplication.
- Definition Classes
- ProcessingSteps
- type DecryptedView = View
The type of decrypted view trees
The type of decrypted view trees
- Definition Classes
- ProcessingSteps
- type PendingDataAndResponseArgs = TransferOutProcessingSteps.PendingDataAndResponseArgs
The type of data needed to generate the pending data and response in constructPendingDataAndResponse.
The type of data needed to generate the pending data and response in constructPendingDataAndResponse. The data is created by decryptViews
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- type PendingRequestData = PendingTransferOut
The type of data stored after request processing to make it available for result processing
The type of data stored after request processing to make it available for result processing
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- type PendingSubmissionData = PendingTransferSubmission
The data stored for submissions that have been sent out, if any
The data stored for submissions that have been sent out, if any
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- type PendingSubmissionId = RootHash
The type used for look-ups into the PendingSubmissions
The type used for look-ups into the PendingSubmissions
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- type PendingSubmissions = Map[RootHash, PendingTransferSubmission]
A store of data on submissions that have been sent out, if any
A store of data on submissions that have been sent out, if any
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- type RejectionArgs = Unit
The type of data needed to create a rejection event in createRejectionEvent.
The type of data needed to create a rejection event in createRejectionEvent. Created by constructPendingDataAndResponse
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- type RequestBatch = RequestAndRootHashMessage[OpenEnvelope[EncryptedViewMessage[TransferOutViewType]]]
The type of request messages
The type of request messages
- Definition Classes
- ProcessingSteps
- type RequestError = TransferProcessorError
The type of errors that can occur during request processing
The type of errors that can occur during request processing
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- type ResultError = TransferProcessorError
The type of errors that can occur during result processing
The type of errors that can occur during result processing
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- type SubmissionResultArgs = PendingTransferSubmission
The type of data needed to generate the submission result in createSubmissionResult.
The type of data needed to generate the submission result in createSubmissionResult. The data is created by updatePendingSubmissions.
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- type SubmissionSendError = TransferProcessorError
The submission errors that can occur during sending the batch to the sequencer and updating the pending submission map.
The submission errors that can occur during sending the batch to the sequencer and updating the pending submission map.
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- case class TransferSubmission(batch: Batch[DefaultOpenEnvelope], pendingSubmissionId: PendingSubmissionId) extends UntrackedSubmission with Product with Serializable
- Definition Classes
- TransferProcessingSteps
Value Members
- object DecryptedViews extends Serializable
- Definition Classes
- ProcessingSteps
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val alarmer: LoggingAlarmStreamer
- Attributes
- protected
- Definition Classes
- TransferProcessingSteps
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- def computeActivenessSetAndPendingContracts(ts: CantonTimestamp, rc: RequestCounter, sc: SequencerCounter, correctRootHashes: NonEmptyList[WithRecipients[FullTransferOutTree]], malformedPayloads: Seq[MalformedPayload], originSnapshot: DomainSnapshotSyncCryptoApi)(implicit traceContext: TraceContext): EitherT[Future, TransferProcessorError, CheckActivenessAndWritePendingContracts]
Phase 3, step 2 (some good views):
Phase 3, step 2 (some good views):
- ts
The timestamp of the request
- rc
The com.digitalasset.canton.participant.RequestCounter of the request
- sc
The com.digitalasset.canton.SequencerCounter of the request
- malformedPayloads
The decryption errors and decrypted views with a wrong root hash
- returns
The activeness set and the pending contracts to add to the com.digitalasset.canton.participant.store.StoredContractManager, and the arguments for step 2.
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- def constructPendingDataAndResponse(pendingDataAndResponseArgs: PendingDataAndResponseArgs, transferLookup: TransferLookup, contractLookup: ContractLookup, tracker: SingleDomainCausalTracker, activenessF: Future[ActivenessResult], pendingCursor: Future[Unit], mediatorId: MediatorId)(implicit traceContext: TraceContext): EitherT[Future, TransferProcessorError, StorePendingDataAndSendResponseAndCreateTimeout]
Phase 3, step 3:
Phase 3, step 3:
- pendingDataAndResponseArgs
Implementation-specific data passed from decryptViews
- transferLookup
Read-only interface of the com.digitalasset.canton.participant.store.memory.TransferCache
- contractLookup
Read-only interface to the com.digitalasset.canton.participant.store.StoredContractManager, which includes the pending contracts
- pendingCursor
Future to complete when the com.digitalasset.canton.participant.protocol.RequestJournal's cursor for the com.digitalasset.canton.participant.protocol.RequestJournal.RequestState.Pending reaching the current request. Block on this future to ensure that all earlier contract store writes are visible.
- mediatorId
The mediator that handles this request
- returns
Returns the PendingRequestData to be stored until Phase 7 and the responses to be sent to the mediator.
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- def createRejectionEvent(rejectionArgs: RejectionArgs)(implicit traceContext: TraceContext): Either[TransferProcessorError, Option[TimestampedEvent]]
Phase 3, step 4:
Phase 3, step 4:
- rejectionArgs
The implementation-specific information needed for the creation of the rejection event
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- def createSubmissionResult(deliver: Deliver[Envelope[_]], pendingSubmission: SubmissionResultArgs): SubmissionResult
Phase 1, step 3:
Phase 1, step 3:
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- def decryptTree(originSnapshot: DomainSnapshotSyncCryptoApi)(envelope: OpenEnvelope[EncryptedViewMessage[TransferOutViewType]]): EitherT[Future, EncryptedViewMessageDecryptionError[TransferOutViewType], WithRecipients[FullTransferOutTree]]
- Attributes
- protected
- Definition Classes
- TransferOutProcessingSteps → TransferProcessingSteps
- def decryptViews(batch: NonEmptyList[OpenEnvelope[EncryptedViewMessage[TransferOutViewType]]], snapshot: DomainSnapshotSyncCryptoApi)(implicit traceContext: TraceContext): EitherT[Future, TransferProcessorError, DecryptedViews]
Phase 3, step 1:
Phase 3, step 1:
- batch
The batch of messages in the request to be processed
- snapshot
Snapshot of the topology state at the request timestamp
- returns
The decrypted views and the errors encountered during decryption
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- implicit val ec: ExecutionContext
- Definition Classes
- TransferOutProcessingSteps → TransferProcessingSteps
- def embedNoMediatorError(error: NoMediatorError): TransferProcessorError
Convert com.digitalasset.canton.participant.protocol.ProtocolProcessor.NoMediatorError into a submission error
Convert com.digitalasset.canton.participant.protocol.ProtocolProcessor.NoMediatorError into a submission error
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- def embedRequestError(err: RequestProcessingError): TransferProcessorError
Wrap an error in request processing from the generic request processor
Wrap an error in request processing from the generic request processor
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- def embedResultError(err: ResultProcessingError): TransferProcessorError
Wrap an error in result processing from the generic request processor
Wrap an error in result processing from the generic request processor
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- val engine: DAMLe
- Definition Classes
- TransferOutProcessingSteps → TransferProcessingSteps
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def eventAndSubmissionIdForInactiveMediator(ts: CantonTimestamp, rc: RequestCounter, sc: SequencerCounter, decryptedViews: NonEmptyList[WithRecipients[DecryptedView]])(implicit traceContext: TraceContext): (Option[TimestampedEvent], Option[PendingSubmissionId])
Phase 3, step 2 (some good views, but the chosen mediator is inactive)
Phase 3, step 2 (some good views, but the chosen mediator is inactive)
- ts
The timestamp of the request
- rc
The com.digitalasset.canton.participant.RequestCounter of the request
- sc
The com.digitalasset.canton.SequencerCounter of the request
- decryptedViews
The decrypted views from step 1 with the right root hash
- returns
The optional rejection event to be published in the event log, and the optional submission ID corresponding to this request
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def getCommitSetAndContractsToBeStoredAndEvent(event: SignedContent[Deliver[DefaultOpenEnvelope]], result: Either[MalformedMediatorRequestResult, TransferOutResult], pendingRequestData: PendingTransferOut, pendingSubmissionMap: PendingSubmissions, tracker: SingleDomainCausalTracker, hashOps: HashOps)(implicit traceContext: TraceContext): EitherT[Future, TransferProcessorError, CommitAndStoreContractsAndPublishEvent]
Phase 7, step 2:
Phase 7, step 2:
- event
The signed com.digitalasset.canton.sequencing.protocol.Deliver event containing the mediator result. It is ensured that the
event
contains exactly one com.digitalasset.canton.protocol.messages.MediatorResult- result
The unpacked mediator result that is contained in the
event
- pendingRequestData
The PendingRequestData produced in Phase 3
- returns
The com.digitalasset.canton.participant.protocol.conflictdetection.CommitSet, the contracts from Phase 3 to be persisted to the contract store, and the event to be published
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hostedStakeholders(stakeholders: List[LfPartyId], snapshot: TopologySnapshot): Future[List[LfPartyId]]
- Attributes
- protected
- Definition Classes
- TransferProcessingSteps
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def logger: TracedLogger
- Attributes
- protected
- Definition Classes
- NamedLogging
- val loggerFactory: NamedLoggerFactory
- Attributes
- protected
- Definition Classes
- TransferOutProcessingSteps → NamedLogging
- implicit def loggingContext(implicit traceContext: TraceContext): ErrorLoggingContext
- Attributes
- protected
- Definition Classes
- NamedLogging
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def noTracingLogger: Logger
- Attributes
- protected
- Definition Classes
- NamedLogging
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- val participantId: ParticipantId
- Definition Classes
- TransferOutProcessingSteps → TransferProcessingSteps
- def pendingDataAndResponseArgsForMalformedPayloads(ts: CantonTimestamp, rc: RequestCounter, sc: SequencerCounter, malformedPayloads: Seq[MalformedPayload], snapshot: DomainSnapshotSyncCryptoApi): Either[RequestError, PendingDataAndResponseArgs]
Phase 3, step 2 (only malformed payloads):
Phase 3, step 2 (only malformed payloads):
Called when no decrypted view has the right root hash.
- returns
scala.Left$ aborts processing and scala.Right$ continues processing with an empty activeness set and no pending contracts
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- def pendingRequestMap: (SyncDomainEphemeralState) => Map[RequestId, PendingRequestDataOrReplayData[PendingRequestData]]
Selector for the storage slot for PendingRequestData
Selector for the storage slot for PendingRequestData
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- def pendingSubmissions(state: SyncDomainEphemeralState): PendingSubmissions
Selector to get the PendingSubmissions, if any
Selector to get the PendingSubmissions, if any
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- def performPendingSubmissionMapUpdate(pendingSubmissionMap: Map[RootHash, PendingTransferSubmission], transferId: Option[TransferId], submitterLf: LfPartyId, rootHash: RootHash): EitherT[Future, TransferProcessorError, PendingTransferSubmission]
- Attributes
- protected
- Definition Classes
- TransferProcessingSteps
- def postProcessResult(verdict: Verdict, pendingSubmission: PendingTransferSubmission)(implicit traceContext: TraceContext): Unit
Phase 7, step 4:
Phase 7, step 4:
Called after the request reached the state com.digitalasset.canton.participant.protocol.RequestJournal.RequestState.Clean in the request journal, if the participant is the submitter. Also called if a timeout occurs with com.digitalasset.canton.protocol.messages.Verdict.Timeout.
- verdict
The verdict on the request
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- def postProcessSubmissionForInactiveMediator(declaredMediator: MediatorId, ts: CantonTimestamp, pendingSubmission: PendingTransferSubmission)(implicit traceContext: TraceContext): Unit
Phase 3, step 2 (submission where the chosen mediator is inactive)
Phase 3, step 2 (submission where the chosen mediator is inactive)
Called if the chosen mediator is inactive and eventAndSubmissionIdForInactiveMediator returned a submission ID that was pending.
- pendingSubmission
The PendingSubmissionData for the submission ID returned by eventAndSubmissionIdForInactiveMediator
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- See also
com.digitalasset.canton.participant.protocol.ProcessingSteps.postProcessResult
- def prepareSubmission(param: SubmissionParam, mediatorId: MediatorId, ephemeralState: SyncDomainEphemeralStateLookup, originRecentSnapshot: DomainSnapshotSyncCryptoApi)(implicit traceContext: TraceContext): EitherT[FutureUnlessShutdown, TransferProcessorError, Submission]
Phase 1, step 1:
Phase 1, step 1:
- param
The parameter object encapsulating the parameters of the submit method
- mediatorId
The mediator ID to use for this submission
- ephemeralState
Read-only access to the com.digitalasset.canton.participant.store.SyncDomainEphemeralState
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- def removePendingSubmission(pendingSubmissions: Map[RootHash, PendingTransferSubmission], pendingSubmissionId: RootHash): Option[PendingTransferSubmission]
Phase 1, step 4; and Phase 7, step 1:
Phase 1, step 4; and Phase 7, step 1:
Remove the pending submission from the pending submissions. Called when sending the submission failed or did not lead to a result in time or a result has arrived for the request.
- Definition Classes
- TransferProcessingSteps → ProcessingSteps
- def requestKind: String
The kind of request, used for logging and error reporting
The kind of request, used for logging and error reporting
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- def submissionDescription(param: SubmissionParam): String
Extract a description for a submission, used for logging and error reporting
Extract a description for a submission, used for logging and error reporting
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- def submissionIdOfPendingRequest(pendingData: PendingTransferOut): RootHash
Extract the submission ID that corresponds to a pending request, if any
Extract the submission ID that corresponds to a pending request, if any
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def updatePendingSubmissions(pendingSubmissionMap: PendingSubmissions, submissionParam: SubmissionParam, pendingSubmissionId: PendingSubmissionId): EitherT[Future, TransferProcessorError, SubmissionResultArgs]
Phase 1, step 2:
Phase 1, step 2:
- submissionParam
Implementation-specific details on the submission, used for logging
- pendingSubmissionId
The key used for updates to the pendingSubmissions
- Definition Classes
- TransferOutProcessingSteps → ProcessingSteps
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])