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;
* @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);
"/" + URLConstants.BASE_PATH + "/" + URLConstants.STREAMS_SUBPATH + "/";
WebSocketFactory {
- requireNonNull(executorService);
- requireNonNull(listenersBroker);
+ requireNonNull(pingExecutor);
+ requireNonNull(streamRegistry);
}
/**
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);
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);
}