Creation of server module
[dcaegen2/collectors/hv-ves.git] / sources / hv-collector-server / src / main / kotlin / org / onap / dcae / collectors / veshv / api / Server.kt
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * dcaegen2-collectors-veshv
  * ================================================================================
- * Copyright (C) 2018 NOKIA
+ * Copyright (C) 2019 NOKIA
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-package org.onap.dcae.collectors.veshv.factory
+package org.onap.dcae.collectors.veshv.api
 
-import org.onap.dcae.collectors.veshv.boundary.CollectorFactory
 import org.onap.dcae.collectors.veshv.boundary.Metrics
-import org.onap.dcae.collectors.veshv.boundary.Server
-import org.onap.dcae.collectors.veshv.config.api.model.ServerConfiguration
-import org.onap.dcae.collectors.veshv.impl.socket.NettyTcpServer
-import org.onap.dcae.collectors.veshv.ssl.boundary.SecurityConfiguration
+import org.onap.dcae.collectors.veshv.config.api.model.HvVesConfiguration
+import org.onap.dcae.collectors.veshv.impl.HvVesServer
 import org.onap.dcae.collectors.veshv.ssl.boundary.SslContextFactory
+import org.onap.dcae.collectors.veshv.utils.ServerHandle
+import reactor.core.publisher.Mono
+
+interface Server {
+    fun start(): Mono<ServerHandle>
+}
 
 /**
  * @author Piotr Jaszczyk <piotr.jaszczyk@nokia.com>
  * @since May 2018
  */
-object ServerFactory {
-
-    private val sslFactory = SslContextFactory()
-
-    fun createNettyTcpServer(serverConfig: ServerConfiguration,
-                             securityConfig: SecurityConfiguration,
-                             collectorFactory: CollectorFactory,
-                             metrics: Metrics
-    ): Server = NettyTcpServer(
-            serverConfig,
-            sslFactory.createServerContext(securityConfig),
-            collectorFactory,
-            metrics
-    )
+object ServersFactory {
+    fun createHvVesServer(config: HvVesConfiguration,
+                          sslContextFactory: SslContextFactory,
+                          metrics: Metrics): Server = HvVesServer(config, sslContextFactory, metrics)
 }