Introduce restconf.server.{api,spi,mdsal}
[netconf.git] / restconf / restconf-nb / src / main / java / org / opendaylight / restconf / nb / rfc8040 / streams / WebSocketFactory.java
index 08a0f9572d02010e5455f8f38b490e79c9f39b4b..21a1bccad811502b9984b29dec82218c839da519 100644 (file)
@@ -9,13 +9,13 @@ package org.opendaylight.restconf.nb.rfc8040.streams;
 
 import static java.util.Objects.requireNonNull;
 
-import java.util.concurrent.ScheduledExecutorService;
 import javax.servlet.http.HttpServletResponse;
 import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest;
 import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse;
 import org.eclipse.jetty.websocket.servlet.WebSocketCreator;
 import org.opendaylight.restconf.nb.rfc8040.URLConstants;
-import org.opendaylight.restconf.nb.rfc8040.streams.RestconfStream.EncodingName;
+import org.opendaylight.restconf.server.spi.RestconfStream;
+import org.opendaylight.restconf.server.spi.RestconfStream.EncodingName;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -28,8 +28,8 @@ import org.slf4j.LoggerFactory;
  * @param heartbeatInterval     Interval in milliseconds between sending of ping control frames.
  */
 record WebSocketFactory(
-        ScheduledExecutorService executorService,
-        ListenersBroker listenersBroker,
+        RestconfStream.Registry streamRegistry,
+        PingExecutor pingExecutor,
         int maximumFragmentLength,
         int heartbeatInterval) implements WebSocketCreator {
     private static final Logger LOG = LoggerFactory.getLogger(WebSocketFactory.class);
@@ -37,8 +37,8 @@ record WebSocketFactory(
         "/" + URLConstants.BASE_PATH + "/" + URLConstants.STREAMS_SUBPATH + "/";
 
     WebSocketFactory {
-        requireNonNull(executorService);
-        requireNonNull(listenersBroker);
+        requireNonNull(pingExecutor);
+        requireNonNull(streamRegistry);
     }
 
     /**
@@ -70,7 +70,7 @@ record WebSocketFactory(
             return notFound(resp);
         }
         final var streamName = stripped.substring(slash + 1);
-        final var stream = listenersBroker.getStream(streamName);
+        final var stream = streamRegistry.lookupStream(streamName);
         if (stream == null) {
             LOG.debug("Listener for stream with name {} was not found.", streamName);
             return notFound(resp);
@@ -82,7 +82,7 @@ record WebSocketFactory(
         resp.setStatusCode(HttpServletResponse.SC_SWITCHING_PROTOCOLS);
         // note: every web-socket manages PING process individually because this approach scales better than
         //       sending PING frames at once over all web-socket sessions
-        return new WebSocketSessionHandler(executorService, stream, new EncodingName(stripped.substring(0, slash)),
+        return new WebSocketSender(pingExecutor, stream, new EncodingName(stripped.substring(0, slash)),
             null, maximumFragmentLength, heartbeatInterval);
     }