c

com.digitalasset.canton.participant.protocol

EnterpriseMessageDispatcher

class EnterpriseMessageDispatcher extends MessageDispatcher with NamedLogging with HasFlushFuture with Spanning

Dispatches the incoming messages of the com.digitalasset.canton.sequencing.client.SequencerClient to the different processors. It also informs the com.digitalasset.canton.participant.protocol.conflictdetection.RequestTracker about the passing of time for messages that are not processed by the com.digitalasset.canton.participant.protocol.ProtocolProcessor.

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. EnterpriseMessageDispatcher
  2. Spanning
  3. HasFlushFuture
  4. NamedLogging
  5. MessageDispatcher
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new EnterpriseMessageDispatcher(protocolVersion: ProtocolVersion, uniqueContractKeys: Boolean, domainId: DomainId, participantId: ParticipantId, requestTracker: RequestTracker, requestProcessors: RequestProcessors, topologyProcessor: (SequencerCounter, SequencedTime, Traced[List[DefaultOpenEnvelope]]) => HandlerResult, acsCommitmentProcessor: ProcessorType, requestCounterAllocator: RequestCounterAllocator, recordOrderPublisher: RecordOrderPublisher, badRootHashMessagesRequestProcessor: BadRootHashMessagesRequestProcessor, repairProcessor: RepairProcessor, inFlightSubmissionTracker: InFlightSubmissionTracker, processAsyncronously: (ViewType) => Boolean, loggerFactory: NamedLoggerFactory, metrics: SyncDomainMetrics)(implicit ec: ExecutionContext, tracer: Tracer)

Type Members

  1. type ProcessingResult = AsyncResult
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. val acsCommitmentProcessor: ProcessorType
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  5. def addToFlushAndLogError(name: String)(future: Future[_])(implicit loggingContext: ErrorLoggingContext): Unit

    Adds the task future to the flush future so that doFlush completes only after future has completed.

    Adds the task future to the flush future so that doFlush completes only after future has completed. Logs an error if the future fails with an exception.

    Attributes
    protected
    Definition Classes
    HasFlushFuture
  6. def addToFlushWithoutLogging(name: String)(future: Future[_]): Unit

    Adds the task future to the flush future so that doFlush completes only after future has completed.

    Adds the task future to the flush future so that doFlush completes only after future has completed. The caller is responsible for logging any exceptions thrown inside the future.

    Attributes
    protected
    Definition Classes
    HasFlushFuture
  7. def alarm(sc: SequencerCounter, ts: CantonTimestamp, msg: String)(implicit traceContext: TraceContext): Unit
    Attributes
    protected
    Definition Classes
    MessageDispatcher
  8. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  9. val badRootHashMessagesRequestProcessor: BadRootHashMessagesRequestProcessor
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  10. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  11. def doFlush(): Future[Unit]

    Returns a future that completes after all added futures have completed.

    Returns a future that completes after all added futures have completed. The returned future never fails.

    Attributes
    protected
    Definition Classes
    HasFlushFuture
  12. def doProcess[A](kind: MessageKind[A], run: => FutureUnlessShutdown[A]): FutureUnlessShutdown[ProcessingResult]
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  13. val domainId: DomainId
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  14. implicit val ec: ExecutionContext
  15. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  16. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  17. implicit def errorLoggingContext(implicit traceContext: TraceContext): ErrorLoggingContext
    Attributes
    protected
    Definition Classes
    NamedLogging
  18. def filterBatchForDomainId(batch: Batch[DefaultOpenEnvelope], sc: SequencerCounter, ts: CantonTimestamp)(implicit traceContext: TraceContext): List[DefaultOpenEnvelope]
    Attributes
    protected
    Definition Classes
    MessageDispatcher
  19. def flush(): Future[Unit]

    Returns a future that completes when all calls to handleAll whose returned scala.concurrent.Future has completed prior to this call have completed processing.

    Returns a future that completes when all calls to handleAll whose returned scala.concurrent.Future has completed prior to this call have completed processing.

    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
    Annotations
    @VisibleForTesting()
  20. def flushCloseable(name: String, timeout: NonNegativeDuration): SyncCloseable
    Attributes
    protected
    Definition Classes
    HasFlushFuture
  21. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  22. def handleAll(tracedEvents: Traced[Seq[Either[Traced[EventWithErrors[SequencedEvent[DefaultOpenEnvelope]]], PossiblyIgnoredProtocolEvent]]]): HandlerResult
  23. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  24. val inFlightSubmissionTracker: InFlightSubmissionTracker
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  25. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  26. def logDeliveryError(sc: SequencerCounter, ts: CantonTimestamp, msgId: MessageId, status: Status)(implicit traceContext: TraceContext): Unit
    Attributes
    protected
    Definition Classes
    MessageDispatcher
  27. def logEvent(sc: SequencerCounter, ts: CantonTimestamp, msgId: Option[MessageId], evt: SignedContent[SequencedEvent[DefaultOpenEnvelope]])(implicit traceContext: TraceContext): Unit
    Attributes
    protected
    Definition Classes
    MessageDispatcher
  28. def logFaultyEvent(sc: SequencerCounter, ts: CantonTimestamp, msgId: Option[MessageId], err: EventWithErrors[SequencedEvent[DefaultOpenEnvelope]])(implicit traceContext: TraceContext): Unit
    Attributes
    protected
    Definition Classes
    MessageDispatcher
  29. def logTimeProof(sc: SequencerCounter, ts: CantonTimestamp)(implicit traceContext: TraceContext): Unit
    Attributes
    protected
    Definition Classes
    MessageDispatcher
  30. def logger: TracedLogger
    Attributes
    protected
    Definition Classes
    NamedLogging
  31. val loggerFactory: NamedLoggerFactory
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherNamedLogging
  32. val metrics: SyncDomainMetrics
  33. implicit def namedLoggingContext(implicit traceContext: TraceContext): NamedLoggingContext
    Attributes
    protected
    Definition Classes
    NamedLogging
  34. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  35. def noTracingLogger: Logger
    Attributes
    protected
    Definition Classes
    NamedLogging
  36. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  37. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  38. def observeDeliverError(error: DeliverError)(implicit traceContext: TraceContext): FutureUnlessShutdown[ProcessingResult]
    Attributes
    protected
    Definition Classes
    MessageDispatcher
  39. def observeSequencing(events: Seq[RawProtocolEvent])(implicit traceContext: TraceContext): FutureUnlessShutdown[ProcessingResult]
    Attributes
    protected
    Definition Classes
    MessageDispatcher
  40. val participantId: ParticipantId
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  41. def processBatch(eventE: Either[EventWithErrors[Deliver[DefaultOpenEnvelope]], SignedContent[Deliver[DefaultOpenEnvelope]]])(implicit traceContext: TraceContext): FutureUnlessShutdown[ProcessingResult]

    Rules for processing batches of envelopes:

    Rules for processing batches of envelopes:

    - Request messages originate from untrusted participants. If the batch contains exactly one com.digitalasset.canton.protocol.messages.RootHashMessage that is sent to the participant and the mediator only, the participant processes only request messages with the same root hash. If there are no such root hash message or multiple thereof, the participant does not process the request at all because the mediator will reject the request as a whole.

    - We do not know the submitting member of a particular submission because such a submission may be sequenced through an untrusted individual sequencer node (e.g., on a BFT domain). Such a sequencer node could lie about the actual submitting member. These lies work even with signed submission requests when an earlier submission request is replayed. So we cannot rely on honest domain nodes sending their messages only once and instead must deduplicate replays on the recipient side.

    Attributes
    protected
    Definition Classes
    MessageDispatcher
  42. def processTopologyTransactions(sc: SequencerCounter, ts: SequencedTime, envelopes: List[DefaultOpenEnvelope])(implicit traceContext: TraceContext): FutureUnlessShutdown[ProcessingResult]
    Attributes
    protected
    Definition Classes
    MessageDispatcher
  43. implicit val processingResultMonoid: Monoid[ProcessingResult]
  44. val protocolVersion: ProtocolVersion
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  45. val recordOrderPublisher: RecordOrderPublisher
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  46. val repairProcessor: RepairProcessor
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  47. def repairProcessorWedging(upToExclusive: CantonTimestamp)(implicit traceContext: TraceContext): FutureUnlessShutdown[ProcessingResult]
    Attributes
    protected
    Definition Classes
    MessageDispatcher
  48. val requestCounterAllocator: RequestCounterAllocator
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  49. val requestProcessors: RequestProcessors
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  50. val requestTracker: RequestTracker
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  51. def snapshotIncomplete: Seq[String]

    Returns the list of currently incomplete tasks.

    Returns the list of currently incomplete tasks. Use only for inspection and debugging.

    Definition Classes
    HasFlushFuture
  52. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  53. def toString(): String
    Definition Classes
    AnyRef → Any
  54. val topologyProcessor: (SequencerCounter, SequencedTime, Traced[List[DefaultOpenEnvelope]]) => HandlerResult
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  55. val uniqueContractKeys: Boolean
    Attributes
    protected
    Definition Classes
    EnterpriseMessageDispatcherMessageDispatcher
  56. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  57. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  58. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  59. def withNewTrace[A](description: String)(f: (TraceContext) => (SpanWrapper) => A)(implicit tracer: Tracer): A
    Attributes
    protected
    Definition Classes
    Spanning
  60. def withSpan[A](description: String)(f: (TraceContext) => (SpanWrapper) => A)(implicit traceContext: TraceContext, tracer: Tracer): A
    Attributes
    protected
    Definition Classes
    Spanning
  61. def withSpanFromGrpcContext[A](description: String)(f: (TraceContext) => (SpanWrapper) => A)(implicit tracer: Tracer): A
    Attributes
    protected
    Definition Classes
    Spanning

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated @Deprecated
    Deprecated

Inherited from Spanning

Inherited from HasFlushFuture

Inherited from NamedLogging

Inherited from MessageDispatcher

Inherited from AnyRef

Inherited from Any

Ungrouped