com.digitalasset.canton.participant.protocol
Phase37Synchronizer
Companion object Phase37Synchronizer
class Phase37Synchronizer extends NamedLogging
Synchronizes the request processing of phases 3 and 7. At the end of phase 3, every request must signal that it has reached com.digitalasset.canton.participant.protocol.RequestJournal.RequestState.Confirmed via the handle returned by registerRequest. At the beginning of phase 7, requests can wait on the completion of phase 3 via awaitConfirmed.
Eventually, all requests should either return a None or the corresponding data if it is the first valid request. After this point the request is cleaned from memory, otherwise, the synchronizer becomes a memory leak.
- Alphabetic
- By Inheritance
- Phase37Synchronizer
- NamedLogging
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Phase37Synchronizer(initRc: RequestCounter, loggerFactory: NamedLoggerFactory, futureSupervisor: FutureSupervisor)
Value Members
- 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
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def awaitConfirmed(requestType: RequestType)(requestId: RequestId, filter: (PendingRequestDataOrReplayData[PendingRequestData]) => Future[Boolean] = (_: PendingRequestDataOrReplayData[requestType.PendingRequestData]) =>
Future.successful(true))(implicit traceContext: TraceContext, ec: ExecutionContext): Future[RequestOutcome[PendingRequestData]]
The returned future completes with either the pending request data, if it's the first valid call after the request has been registered and not marked as timed-out, or None otherwise.
The returned future completes with either the pending request data, if it's the first valid call after the request has been registered and not marked as timed-out, or None otherwise. Please note that for each request only the first awaitConfirmed, where filter == true, completes with the pending request data even if the filters are different.
- requestId
The request id (timestamp) of the request to synchronize.
- filter
A function that returns if a request is either valid or not (e.g. contains a valid signature). This filter can be different for each call of awaitConfirmed, but only the first valid filter will complete with the pending request data.
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- implicit def errorLoggingContext(implicit traceContext: TraceContext): ErrorLoggingContext
- Attributes
- protected
- Definition Classes
- NamedLogging
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def logger: TracedLogger
- Attributes
- protected
- Definition Classes
- NamedLogging
- val loggerFactory: NamedLoggerFactory
- Definition Classes
- Phase37Synchronizer → NamedLogging
- implicit def namedLoggingContext(implicit traceContext: TraceContext): NamedLoggingContext
- 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()
- def registerRequest(requestType: RequestType)(requestId: RequestId)(implicit traceContext: TraceContext, ec: ExecutionContext): PendingRequestDataHandle[PendingRequestData]
Register a request in 'pendingRequests' and returns an handle that can be used to complete the underlying request promise with its corresponding data or None if it's a timeout.
Register a request in 'pendingRequests' and returns an handle that can be used to complete the underlying request promise with its corresponding data or None if it's a timeout. It initializes the future, to chain the evaluations, to handle.future.
- requestId
The request id (timestamp) of the request to register.
- returns
The promise handle.
- Exceptions thrown
- If the request has already been registered
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- 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])