From 141d7d08901ce38c46963d53da2cc79d6694367b Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Thu, 19 Feb 2026 15:39:52 +0100 Subject: [PATCH] Simple session structure --- .../java/dev/selimaj/session/Session.java | 36 +++++++++++++++++-- .../dev/selimaj/session/SessionListener.java | 10 ++++++ 2 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/main/java/dev/selimaj/session/SessionListener.java diff --git a/src/main/java/dev/selimaj/session/Session.java b/src/main/java/dev/selimaj/session/Session.java index 4b78c7b..49e33f3 100644 --- a/src/main/java/dev/selimaj/session/Session.java +++ b/src/main/java/dev/selimaj/session/Session.java @@ -1,5 +1,37 @@ package dev.selimaj.session; +import java.util.concurrent.*; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.WebSocket; + public final class Session { - private Session() {} -} + + private final WebSocket ws; + private final ExecutorService executor; + private final SessionListener listener; + + public Session(WebSocket ws, SessionListener listener, ExecutorService executor) { + this.ws = ws; + this.executor = executor; + this.listener = listener; + } + + public static Session connect(String uri) throws Exception { + SessionListener listener = new SessionListener(); + + WebSocket ws = HttpClient.newHttpClient() + .newWebSocketBuilder() + .buildAsync(URI.create("ws://example.com/echo"), listener) + .join(); + + return new Session(ws, listener, Executors.newCachedThreadPool()); + } + + public void startReceiver() { + executor.execute(() -> { + + }); + } + +} \ No newline at end of file diff --git a/src/main/java/dev/selimaj/session/SessionListener.java b/src/main/java/dev/selimaj/session/SessionListener.java new file mode 100644 index 0000000..3357a73 --- /dev/null +++ b/src/main/java/dev/selimaj/session/SessionListener.java @@ -0,0 +1,10 @@ +package dev.selimaj.session; + +import java.net.http.WebSocket; +import java.util.concurrent.ConcurrentHashMap; + +import dev.selimaj.session.types.MethodHandler; + +public class SessionListener implements WebSocket.Listener { + public final ConcurrentHashMap methods = new ConcurrentHashMap<>(); +}