aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/messaging/ReportingBus.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/core/messaging/ReportingBus.scala')
-rw-r--r--src/main/scala/xyz/driver/core/messaging/ReportingBus.scala34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/messaging/ReportingBus.scala b/src/main/scala/xyz/driver/core/messaging/ReportingBus.scala
new file mode 100644
index 0000000..74038e4
--- /dev/null
+++ b/src/main/scala/xyz/driver/core/messaging/ReportingBus.scala
@@ -0,0 +1,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)
+}