aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/rest/ServiceDiscovery.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz/driver/core/rest/ServiceDiscovery.scala')
-rw-r--r--src/main/scala/xyz/driver/core/rest/ServiceDiscovery.scala18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/rest/ServiceDiscovery.scala b/src/main/scala/xyz/driver/core/rest/ServiceDiscovery.scala
index f0f3b5b..5f589a9 100644
--- a/src/main/scala/xyz/driver/core/rest/ServiceDiscovery.scala
+++ b/src/main/scala/xyz/driver/core/rest/ServiceDiscovery.scala
@@ -6,3 +6,21 @@ trait ServiceDiscovery {
def discover[T <: Service](serviceName: Name[Service]): T
}
+
+object ServiceDiscovery {
+ trait SavingUsedServiceDiscovery {
+ private val usedServices = new scala.collection.mutable.HashSet[String]()
+
+ def saveServiceUsage(serviceName: Name[Service]): Unit = usedServices.synchronized {
+ usedServices += serviceName.value
+ }
+
+ def getUsedServices: Set[String] = usedServices.synchronized { usedServices.toSet }
+ }
+
+ class NoServiceDiscovery extends ServiceDiscovery with SavingUsedServiceDiscovery {
+
+ def discover[T <: Service](serviceName: Name[Service]): T =
+ throw new IllegalArgumentException(s"Service with name $serviceName is unknown")
+ }
+}