1package dev.rafex.ether.websocket.jetty12;
29import java.nio.ByteBuffer;
33import org.eclipse.jetty.websocket.api.Callback;
34import org.eclipse.jetty.websocket.api.Session;
36import dev.rafex.ether.websocket.core.WebSocketCloseStatus;
37import dev.rafex.ether.websocket.core.WebSocketEndpoint;
39final class JettyWebSocketEndpointAdapter
implements Session.Listener.AutoDemanding {
42 private final String path;
43 private final Map<String, String> pathParams;
44 private final Map<String, List<String>> queryParams;
45 private final Map<String, List<String>> headers;
48 JettyWebSocketEndpointAdapter(
final WebSocketEndpoint endpoint,
final String path,
final Map<String, String> pathParams,
49 final Map<String, List<String>> queryParams,
final Map<String, List<String>> headers) {
50 this.endpoint = endpoint;
52 this.pathParams = pathParams;
53 this.queryParams = queryParams;
54 this.headers = headers;
58 public void onWebSocketOpen(
final Session session) {
61 endpoint.
onOpen(this.session);
62 }
catch (
final Exception e) {
68 public void onWebSocketText(
final String message) {
70 endpoint.
onText(session, message);
71 }
catch (
final Exception e) {
77 public void onWebSocketBinary(
final ByteBuffer payload,
final Callback callback) {
79 endpoint.
onBinary(session, payload ==
null ? ByteBuffer.allocate(0) : payload.slice());
81 }
catch (
final Exception e) {
88 public void onWebSocketPartialText(
final String payload,
final boolean fin) {
90 onWebSocketText(payload);
95 public void onWebSocketPartialBinary(
final ByteBuffer payload,
final boolean fin,
final Callback callback) {
97 onWebSocketBinary(payload, callback);
104 public void onWebSocketClose(
final int statusCode,
final String reason,
final Callback callback) {
105 if (session ==
null) {
110 endpoint.
onClose(session, WebSocketCloseStatus.of(statusCode, reason));
112 }
catch (
final Exception e) {
118 private void handleFailure(
final Exception error) {
119 endpoint.
onError(session, error);
120 if (session !=
null && session.
isOpen()) {
121 session.
close(WebSocketCloseStatus.SERVER_ERROR);
126 public void onWebSocketError(
final Throwable cause) {
127 if (session ==
null) {
130 endpoint.
onError(session, cause);
CompletionStage< Void > close(final WebSocketCloseStatus status)
default void onText(final WebSocketSession session, final String message)
default void onOpen(final WebSocketSession session)
default void onBinary(final WebSocketSession session, final ByteBuffer message)
default void onClose(final WebSocketSession session, final WebSocketCloseStatus closeStatus)
default void onError(final WebSocketSession session, final Throwable error)