aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/core/rest/ServiceDiscovery.scala
diff options
context:
space:
mode:
authorZach Smith <zach@driver.xyz>2017-10-16 11:54:59 -0700
committerZach Smith <zach@driver.xyz>2017-10-16 11:54:59 -0700
commit354a21d1a72867b352edbd0aa25b4980938d2749 (patch)
tree402bef387ab0e56da82820027f2b46ee4aa08df1 /src/main/scala/xyz/driver/core/rest/ServiceDiscovery.scala
parent8a34b953fa480bfea7e80a46eb4de6b20b4bca68 (diff)
downloaddriver-core-354a21d1a72867b352edbd0aa25b4980938d2749.tar.gz
driver-core-354a21d1a72867b352edbd0aa25b4980938d2749.tar.bz2
driver-core-354a21d1a72867b352edbd0aa25b4980938d2749.zip
Consolidate files
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")
+ }
+}