aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/messaging/ReportingBus.scala
blob: 74038e4839e2021c0dd31b9f41dfb4e1dc3cccdc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package xyz.driver.core.messaging

import xyz.driver.core.reporting.{Reporter, SpanContext}

import scala.concurrent.Future
import scala.language.higherKinds

trait ReportingBus extends Bus {

  def reporter: Reporter

  trait TracedMessage[A] extends BasicMessage[A] { self: Message[A] =>
    def spanContext: SpanContext
  }

  type Message[A] <: TracedMessage[A]

  abstract override def publishMessages[A](topic: Topic[A], messages: Seq[A]): Future[Unit] = {
    super.publishMessages(topic, messages)
  }

  abstract override def fetchMessages[A](
      topic: Topic[A],
      config: SubscriptionConfig,
      maxMessages: Int): Future[Seq[Message[A]]] = {
    super.fetchMessages(topic, config, maxMessages)
  }

}

trait Topic2
trait Bus2 {
  def publishMessage[A](topic: Topic2, message: A)
}