Skip to content

Commit

Permalink
update claj integration
Browse files Browse the repository at this point in the history
  • Loading branch information
xzxADIxzx committed Mar 13, 2023
1 parent 820ec68 commit 7ede99c
Showing 1 changed file with 30 additions and 6 deletions.
36 changes: 30 additions & 6 deletions src/java/scheme/ClajIntegration.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,13 @@ public static void load() {

public static Client createRoom(String ip, int port, Cons<String> link, Runnable disconnected) throws IOException {
Client client = new Client(8192, 8192, new Serializer());
Threads.daemon("CLaJ Client", client::run);
Threads.daemon("CLaJ Room", client::run);

client.addListener(serverListener);
client.addListener(new NetListener() {

/** Used when creating redirectors. */
public String key;

@Override
public void connected(Connection connection) {
client.sendTCP("new");
Expand All @@ -58,9 +61,14 @@ public void disconnected(Connection connection, DcReason reason) {
@Override
public void received(Connection connection, Object object) {
if (object instanceof String message) {
if (message.startsWith("CLaJ"))
link.get(message + "#" + ip + ":" + port);
else
if (message.startsWith("CLaJ")) {
this.key = message;
link.get(key + "#" + ip + ":" + port);
} else if (message.equals("new")) {
try {
createRedirector(ip, port, key);
} catch (Exception ignored) {}
} else
Call.sendMessage(message);
}
}
Expand All @@ -72,6 +80,22 @@ public void received(Connection connection, Object object) {
return client;
}

public static void createRedirector(String ip, int port, String key) throws IOException {
Client client = new Client(8192, 8192, new Serializer());
Threads.daemon("CLaJ Redirector", client::run);

client.addListener(serverListener);
client.addListener(new NetListener() {
@Override
public void connected(Connection connection) {
client.sendTCP("host" + key);
}
});

client.connect(5000, ip, port, port);
clients.add(client);
}

public static void joinRoom(String ip, int port, String key, Runnable success) {
logic.reset();
net.reset();
Expand All @@ -83,7 +107,7 @@ public static void joinRoom(String ip, int port, String key, Runnable success) {

ByteBuffer buffer = ByteBuffer.allocate(8192);
buffer.put(Serializer.linkID);
TypeIO.writeString(buffer, key);
TypeIO.writeString(buffer, "join" + key);

buffer.limit(buffer.position()).position(0);
net.send(buffer, true);
Expand Down

0 comments on commit 7ede99c

Please sign in to comment.