Intial commit
This commit is contained in:
parent
7329fb8dea
commit
73f201bdac
268 changed files with 11220 additions and 5 deletions
25
no2all-react-nostr/pom.xml
Normal file
25
no2all-react-nostr/pom.xml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>love.distributedrebirth.no2all</groupId>
|
||||
<artifactId>no2all</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>no2all-react-nostr</artifactId>
|
||||
<name>No2All-React-NoStr</name>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>no2all-nostr</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>no2all-react-wire</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>no2all-wire-ojw</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package love.distributedrebirth.no2all.react.nostr.client;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
|
||||
|
||||
import love.distributedrebirth.no2all.nostr.model.NoStrRelayInfo;
|
||||
|
||||
import java.net.http.HttpResponse.BodyHandlers;
|
||||
|
||||
import jakarta.json.Json;
|
||||
import jakarta.json.JsonReader;
|
||||
|
||||
public class NoStrRelayFetchInfo {
|
||||
|
||||
public NoStrRelayInfo fetchRelayInfo(URI uri) throws IOException, InterruptedException {
|
||||
HttpRequest request = HttpRequest.newBuilder(uri).header("Accept", "application/nostr+json").build();
|
||||
HttpResponse<String> response = HttpClient.newHttpClient().send(request, BodyHandlers.ofString());
|
||||
if (response.statusCode() != 200) {
|
||||
return null;
|
||||
}
|
||||
String contentJson = response.body();
|
||||
try (JsonReader read = Json.createReader(new StringReader(contentJson))) {
|
||||
NoStrRelayInfo result = new NoStrRelayInfo(read.readObject());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package love.distributedrebirth.no2all.react.nostr.client;
|
||||
|
||||
public enum NoStrRelayReadType {
|
||||
|
||||
NONE,
|
||||
ALL,
|
||||
|
||||
;
|
||||
}
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
package love.distributedrebirth.no2all.react.nostr.client;
|
||||
|
||||
import love.distributedrebirth.no2all.nostr.NoStr;
|
||||
import love.distributedrebirth.no2all.nostr.fire.NoStrFirePipe;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelay;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientAuth;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientCount;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientEose;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientEvent;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientNotice;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientOk;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayAuth;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayClose;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayCount;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayEvent;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayReq;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlotLoad;
|
||||
import love.distributedrebirth.no2all.react.No2AllReact;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactListener;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlot;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlotSignal;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactTypeScript;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllActClientClose;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllActClientSendMessage;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllArtClient;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllArtClientOnMessage;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllRtsClient;
|
||||
|
||||
public class NoStrRtsClient implements No2AllReactTypeScript {
|
||||
|
||||
public static final No2AllReactSlot API = No2AllReactSlot.ofClass(NoStrRtsClient.class);
|
||||
|
||||
@Override
|
||||
public void onEvent(No2AllReactSlotSignal<No2AllReactSlotLoad> signal) {
|
||||
No2AllReact react = signal.getReact();
|
||||
react.claim(API);
|
||||
react.registrate(No2AllRtsClient.API, No2AllArtClient.class, artClient -> {
|
||||
No2AllReactSlot clientSlot = artClient.getData().getSlot();
|
||||
react.claimIn(clientSlot, NoStrMsgToRelayAuth.class);
|
||||
react.claimIn(clientSlot, NoStrMsgToRelayClose.class);
|
||||
react.claimIn(clientSlot, NoStrMsgToRelayCount.class);
|
||||
react.claimIn(clientSlot, NoStrMsgToRelayEvent.class);
|
||||
react.claimIn(clientSlot, NoStrMsgToRelayReq.class);
|
||||
react.claimOut(clientSlot, NoStrMsgToClientAuth.class);
|
||||
react.claimOut(clientSlot, NoStrMsgToClientCount.class);
|
||||
react.claimOut(clientSlot, NoStrMsgToClientEose.class);
|
||||
react.claimOut(clientSlot, NoStrMsgToClientEvent.class);
|
||||
react.claimOut(clientSlot, NoStrMsgToClientNotice.class);
|
||||
react.claimOut(clientSlot, NoStrMsgToClientOk.class);
|
||||
NoStrFirePipe pipeReader = NoStr.FACTORY.pipeReaderClient(reason -> {
|
||||
react.fire(clientSlot, No2AllActClientClose.ofRefuse(reason));
|
||||
}, message -> {
|
||||
react.fire(clientSlot, message);
|
||||
});
|
||||
react.registrate(clientSlot, No2AllArtClientOnMessage.class, v -> {
|
||||
pipeReader.onFire(v.getData().getMessage());
|
||||
});
|
||||
react.registrate(clientSlot, NoStrMsgToRelayAuth.class, pipeWriter(react, clientSlot));
|
||||
react.registrate(clientSlot, NoStrMsgToRelayClose.class, pipeWriter(react, clientSlot));
|
||||
react.registrate(clientSlot, NoStrMsgToRelayCount.class, pipeWriter(react, clientSlot));
|
||||
react.registrate(clientSlot, NoStrMsgToRelayEvent.class, pipeWriter(react, clientSlot));
|
||||
react.registrate(clientSlot, NoStrMsgToRelayReq.class, pipeWriter(react, clientSlot));
|
||||
});
|
||||
}
|
||||
|
||||
private <T extends NoStrMsgToRelay> No2AllReactListener<T> pipeWriter(No2AllReact react, No2AllReactSlot clientSlot) {
|
||||
return v -> {
|
||||
react.fire(clientSlot, new No2AllActClientSendMessage(v.getData().toBible().toString()));
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
package love.distributedrebirth.no2all.react.nostr.server;
|
||||
|
||||
import love.distributedrebirth.no2all.nostr.NoStr;
|
||||
import love.distributedrebirth.no2all.nostr.fire.NoStrFirePipe;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClient;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientAuth;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientCount;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientEose;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientEvent;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientNotice;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientOk;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayAuth;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayClose;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayCount;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayEvent;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayReq;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlotLoad;
|
||||
import love.distributedrebirth.no2all.react.No2AllReact;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactListener;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlot;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlotSignal;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactTypeScript;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllActServerBroadcastMessage;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllActServerSocketClose;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllActServerSocketSendMessage;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServer;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServerSocket;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServerSocketOnMessage;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllRtsServer;
|
||||
|
||||
public class NoStrRtsServer implements No2AllReactTypeScript {
|
||||
|
||||
public static final No2AllReactSlot API = No2AllReactSlot.ofClass(NoStrRtsServer.class);
|
||||
|
||||
@Override
|
||||
public void onEvent(No2AllReactSlotSignal<No2AllReactSlotLoad> signal) {
|
||||
No2AllReact react = signal.getReact();
|
||||
react.claim(API);
|
||||
react.requireSlot(API, No2AllRtsServer.API);
|
||||
react.claimIn(API, NoStrMsgToClientNotice.class);
|
||||
react.registrate(API, NoStrMsgToClientNotice.class, v -> {
|
||||
react.fireForEach(No2AllRtsServer.API, new No2AllActServerBroadcastMessage(v.getData().toBible().toString()));
|
||||
});
|
||||
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, artServer -> {
|
||||
No2AllReactSlot serverSlot = artServer.getData().getSlot();
|
||||
react.claimIn(serverSlot, NoStrMsgToClientNotice.class);
|
||||
react.registrate(serverSlot, No2AllArtServerSocket.class, artSocket -> {
|
||||
No2AllReactSlot socketSlot = artSocket.getData().getSlot();
|
||||
react.claimIn(socketSlot, NoStrMsgToClientAuth.class);
|
||||
react.claimIn(socketSlot, NoStrMsgToClientCount.class);
|
||||
react.claimIn(socketSlot, NoStrMsgToClientEose.class);
|
||||
react.claimIn(socketSlot, NoStrMsgToClientEvent.class);
|
||||
react.claimIn(socketSlot, NoStrMsgToClientNotice.class);
|
||||
react.claimIn(socketSlot, NoStrMsgToClientOk.class);
|
||||
react.claimOut(socketSlot, NoStrMsgToRelayAuth.class);
|
||||
react.claimOut(socketSlot, NoStrMsgToRelayClose.class);
|
||||
react.claimOut(socketSlot, NoStrMsgToRelayCount.class);
|
||||
react.claimOut(socketSlot, NoStrMsgToRelayEvent.class);
|
||||
react.claimOut(socketSlot, NoStrMsgToRelayReq.class);
|
||||
NoStrFirePipe pipeReader = NoStr.FACTORY.pipeReaderRelay(reason -> {
|
||||
react.fire(socketSlot, No2AllActServerSocketClose.ofRefuse(reason));
|
||||
}, message -> {
|
||||
react.fire(serverSlot, message);
|
||||
});
|
||||
react.registrate(socketSlot, No2AllArtServerSocketOnMessage.class, v -> {
|
||||
pipeReader.onFire(v.getData().getMessage());
|
||||
});
|
||||
react.registrate(socketSlot, NoStrMsgToClientAuth.class, pipeWriter(react, socketSlot));
|
||||
react.registrate(socketSlot, NoStrMsgToClientCount.class, pipeWriter(react, socketSlot));
|
||||
react.registrate(socketSlot, NoStrMsgToClientEose.class, pipeWriter(react, socketSlot));
|
||||
react.registrate(socketSlot, NoStrMsgToClientEvent.class, pipeWriter(react, socketSlot));
|
||||
react.registrate(socketSlot, NoStrMsgToClientNotice.class, pipeWriter(react, socketSlot));
|
||||
react.registrate(socketSlot, NoStrMsgToClientOk.class, pipeWriter(react, socketSlot));
|
||||
});
|
||||
react.registrate(serverSlot, NoStrMsgToClientNotice.class, v -> {
|
||||
react.fire(serverSlot, new No2AllActServerBroadcastMessage(v.getData().toBible().toString()));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private <T extends NoStrMsgToClient> No2AllReactListener<T> pipeWriter(No2AllReact react, No2AllReactSlot clientSlot) {
|
||||
return v -> {
|
||||
react.fire(clientSlot, new No2AllActServerSocketSendMessage(v.getData().toBible().toString()));
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
package love.distributedrebirth.no2all.react.nostr.server.relay;
|
||||
|
||||
import love.distributedrebirth.no2all.nostr.model.event.NoStrEvent;
|
||||
|
||||
public final class NoStrArtServerRelayStoreEvent {
|
||||
|
||||
private final NoStrEvent event;
|
||||
private final String remoteAddr;
|
||||
|
||||
protected NoStrArtServerRelayStoreEvent(NoStrEvent event, String remoteAddr) {
|
||||
this.event = event;
|
||||
this.remoteAddr = remoteAddr;
|
||||
}
|
||||
|
||||
public NoStrEvent getEvent() {
|
||||
return event;
|
||||
}
|
||||
|
||||
public String getRemoteAddr() {
|
||||
return remoteAddr;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
package love.distributedrebirth.no2all.react.nostr.server.relay;
|
||||
|
||||
import love.distributedrebirth.no2all.nostr.model.event.NoStrEvent;
|
||||
import love.distributedrebirth.no2all.nostr.model.event.NoStrEventSignature;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToClientOk;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayEvent;
|
||||
import love.distributedrebirth.no2all.nostr.nip.NoStrImplMessageOkReason;
|
||||
import love.distributedrebirth.no2all.react.No2AllReact;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlot;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlotLoad;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlotSignal;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactTypeScript;
|
||||
import love.distributedrebirth.no2all.react.nostr.server.NoStrRtsServer;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServer;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServerSocket;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllRtsServer;
|
||||
|
||||
public class NoStrRtsServerRelay implements No2AllReactTypeScript {
|
||||
|
||||
public static final No2AllReactSlot API = No2AllReactSlot.ofClass(NoStrRtsServerRelay.class);
|
||||
|
||||
@Override
|
||||
public void onEvent(No2AllReactSlotSignal<No2AllReactSlotLoad> signal) {
|
||||
No2AllReact react = signal.getReact();
|
||||
react.claim(API);
|
||||
react.requireSlot(API, NoStrRtsServer.API);
|
||||
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, artServer -> {
|
||||
No2AllReactSlot serverSlot = artServer.getData().getSlot();
|
||||
react.registrate(serverSlot, No2AllArtServerSocket.class, artSocket -> {
|
||||
No2AllReactSlot socketSlot = artSocket.getData().getSlot();
|
||||
react.registrate(socketSlot, NoStrMsgToRelayEvent.class, v -> {
|
||||
handleRelayEvent(react, v.getData().getEvent(), artSocket.getData().getRemoteAddr(), socketSlot);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private void handleRelayEvent(No2AllReact react, NoStrEvent event, String remoteAddr, No2AllReactSlot socketSlot) {
|
||||
boolean eventSaved = false;
|
||||
String eventResponse = "";
|
||||
NoStrImplMessageOkReason eventReason = NoStrImplMessageOkReason.DEFAULT;
|
||||
|
||||
// filter on
|
||||
event.getPayload().getKind();
|
||||
event.getPayload().getPublicKey();
|
||||
event.getPayload().getTags();
|
||||
|
||||
eventSaved = NoStrEventSignature.verify(event);
|
||||
if (!eventSaved) {
|
||||
eventReason = NoStrImplMessageOkReason.INVALID;
|
||||
}
|
||||
|
||||
System.out.println("Validate event: " + eventSaved + " eventId: " + event.getId());
|
||||
|
||||
|
||||
if (eventSaved) {
|
||||
react.fire(API, new NoStrArtServerRelayStoreEvent(event, remoteAddr));
|
||||
}
|
||||
react.fire(socketSlot, new NoStrMsgToClientOk(event.getId(), eventSaved, eventReason, eventResponse));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package love.distributedrebirth.no2all.react.nostr.server.relay;
|
||||
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayClose;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayReq;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlotLoad;
|
||||
import love.distributedrebirth.no2all.react.No2AllReact;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlot;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlotSignal;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactTypeScript;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServer;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServerSocket;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllRtsServer;
|
||||
|
||||
public class NoStrRtsServerRelaySubs implements No2AllReactTypeScript {
|
||||
|
||||
public static final No2AllReactSlot API = No2AllReactSlot.ofClass(NoStrRtsServerRelaySubs.class);
|
||||
|
||||
@Override
|
||||
public void onEvent(No2AllReactSlotSignal<No2AllReactSlotLoad> signal) {
|
||||
No2AllReact react = signal.getReact();
|
||||
react.claim(API);
|
||||
react.requireSlot(API, NoStrRtsServerRelay.API);
|
||||
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, v -> {
|
||||
No2AllReactSlot serverSlot = v.getData().getSlot();
|
||||
react.registrate(serverSlot, No2AllArtServerSocket.class, x -> {
|
||||
No2AllReactSlot socketSlot = x.getData().getSlot();
|
||||
react.registrate(socketSlot, NoStrMsgToRelayReq.class, y -> {
|
||||
String subId = y.getData().getSubscriptionId();
|
||||
y.getData().getFilters();
|
||||
System.out.println("sub new: " + subId);
|
||||
});
|
||||
react.registrate(socketSlot, NoStrMsgToRelayClose.class, y -> {
|
||||
String subId = y.getData().getSubscriptionId();
|
||||
System.out.println("sub clone: " + subId);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,110 @@
|
|||
package love.distributedrebirth.no2all.react.nostr.client;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import love.distributedrebirth.no2all.nostr.NoStr;
|
||||
import love.distributedrebirth.no2all.nostr.fire.NoStrFireWaterBoiler;
|
||||
import love.distributedrebirth.no2all.nostr.model.NoStrIdentity;
|
||||
import love.distributedrebirth.no2all.nostr.model.NoStrIdentityPrivateKey;
|
||||
import love.distributedrebirth.no2all.nostr.model.event.NoStrEvent;
|
||||
import love.distributedrebirth.no2all.nostr.model.message.NoStrMsgToRelayClose;
|
||||
import love.distributedrebirth.no2all.nostr.nip.NoStrImplEventKind;
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlot;
|
||||
import love.distributedrebirth.no2all.react.warp.No2AllReactWarpCore;
|
||||
import love.distributedrebirth.no2all.react.warp.No2AllRtsWarpSpeedMonitor;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllActClient;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllActClientClose;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllActClientConnect;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllArtClient;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllArtClientOnClose;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllArtClientOnError;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllArtClientOnOpen;
|
||||
import love.distributedrebirth.no2all.react.wire.client.No2AllRtsClient;
|
||||
import love.distributedrebirth.no2all.wire.ojw.OjwWireClientEndpoint;
|
||||
|
||||
public class NoStrClientTest {
|
||||
|
||||
private final static NoStrIdentity SENDER = new NoStrIdentity(NoStrIdentityPrivateKey.ofRandom());
|
||||
// private final static Map<String, String> RELAYS = Map.of("brb", "brb.io",
|
||||
// "damus", "relay.damus.io", "ZBD", "nostr.zebedee.cloud", "taxi",
|
||||
// "relay.taxi", "vision", "relay.nostr.vision");
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
No2AllReactWarpCore react = new No2AllReactWarpCore();
|
||||
react.load(new No2AllRtsWarpSpeedMonitor());
|
||||
react.load(new No2AllRtsClient());
|
||||
react.load(new NoStrRtsClient());
|
||||
|
||||
react.registrate(No2AllRtsClient.API, No2AllArtClient.class, v -> {
|
||||
No2AllReactSlot clientSlot = v.getData().getSlot();
|
||||
System.out.println("NoStrClient connect");
|
||||
react.registrate(clientSlot, No2AllArtClientOnError.class, x -> {
|
||||
System.out.println("NoStrClient socket error: " + x.getData().getError().getMessage());
|
||||
});
|
||||
react.registrate(clientSlot, No2AllArtClientOnClose.class, x -> {
|
||||
System.out.println("NoStrClient socket close");
|
||||
});
|
||||
react.registrate(clientSlot, No2AllArtClientOnOpen.class, x -> {
|
||||
System.out.println("NoStrClient socket open");
|
||||
react.fire(clientSlot, new NoStrMsgToRelayClose("give-me-error"));
|
||||
});
|
||||
react.fire(clientSlot, new No2AllActClientConnect());
|
||||
});
|
||||
|
||||
OjwWireClientEndpoint clientEndpoint = new OjwWireClientEndpoint(new URI("ws://localhost:8080"));
|
||||
System.out.println("NoStrClient start");
|
||||
react.fire(No2AllRtsClient.API, new No2AllActClient(clientEndpoint));
|
||||
|
||||
OjwWireClientEndpoint clientEndpoint2 = new OjwWireClientEndpoint(new URI("ws://localhost:8080"));
|
||||
System.out.println("NoStrClient start2");
|
||||
react.fire(No2AllRtsClient.API, new No2AllActClient(clientEndpoint2));
|
||||
|
||||
for (int i = 0; i < 100; i++) {
|
||||
react.fire(No2AllRtsClient.API, SENDER);
|
||||
Thread.sleep(100);
|
||||
}
|
||||
|
||||
Thread.sleep(500);
|
||||
|
||||
Thread exitTimer = new Thread(() -> {
|
||||
try {
|
||||
Thread.sleep(2000);
|
||||
} catch (InterruptedException e2) {
|
||||
// TODO Auto-generated catch block
|
||||
e2.printStackTrace();
|
||||
}
|
||||
System.out.println("NoStrClient stopping");
|
||||
react.fireForEach(No2AllRtsClient.API, No2AllActClientClose.ofNormal("exit"));
|
||||
System.out.println("NoStrClient stopped");
|
||||
});
|
||||
exitTimer.start();
|
||||
}
|
||||
|
||||
public static void main2(String[] args) throws Exception {
|
||||
|
||||
|
||||
|
||||
ExecutorService executor = Executors.newFixedThreadPool(10);
|
||||
executor.submit(() -> {
|
||||
try {
|
||||
NoStrFireWaterBoiler userBoiler = NoStr.FACTORY.boiler(SENDER);
|
||||
NoStrEvent event = userBoiler.smoker()
|
||||
.tagSubject("Reply to all")
|
||||
.tagR("")
|
||||
.burn()
|
||||
.water(NoStrImplEventKind.TEXT_NOTE, "Hello world");
|
||||
|
||||
System.out.println(event);
|
||||
// GenericMessage message = new EventMessage(event);
|
||||
// CLIENT.send(message);
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
});
|
||||
executor.shutdown();
|
||||
executor.awaitTermination(60, TimeUnit.SECONDS);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
package love.distributedrebirth.no2all.react.nostr.server;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
|
||||
import love.distributedrebirth.no2all.react.No2AllReactSlot;
|
||||
import love.distributedrebirth.no2all.react.nostr.server.relay.NoStrRtsServerRelay;
|
||||
import love.distributedrebirth.no2all.react.nostr.server.relay.NoStrRtsServerRelaySubs;
|
||||
import love.distributedrebirth.no2all.react.warp.No2AllReactWarpCore;
|
||||
import love.distributedrebirth.no2all.react.warp.No2AllRtsWarpSpeedMonitor;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllActServer;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServer;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServerOnStart;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServerSocket;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllArtServerSocketOnClose;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllRtsServerLog;
|
||||
import love.distributedrebirth.no2all.react.wire.server.No2AllRtsServer;
|
||||
import love.distributedrebirth.no2all.wire.ojw.OjwWireServer;
|
||||
import love.distributedrebirth.no2all.wire.ojw.OjwWireServerEndpoint;
|
||||
|
||||
public class NoStrServerTest {
|
||||
static OjwWireServer server = null;
|
||||
public static void main(String[] args) throws Exception {
|
||||
No2AllReactWarpCore react = new No2AllReactWarpCore();
|
||||
react.load(new No2AllRtsWarpSpeedMonitor());
|
||||
react.load(new No2AllRtsServer());
|
||||
react.load(new No2AllRtsServerLog());
|
||||
react.load(new NoStrRtsServer());
|
||||
react.load(new NoStrRtsServerRelay());
|
||||
react.load(new NoStrRtsServerRelaySubs());
|
||||
|
||||
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, artServer -> {
|
||||
No2AllReactSlot serverSlot = artServer.getData().getSlot();
|
||||
react.registrate(serverSlot, No2AllArtServerOnStart.class, v -> {
|
||||
System.out.println("RelayServer started: " + v.getTarget().getSlotSlug());
|
||||
});
|
||||
react.registrate(serverSlot, No2AllArtServerSocket.class, v -> {
|
||||
System.out.println("RelayServer client-open: " + v.getData().getSlot().getSlotPath());
|
||||
react.registrate(v.getData().getSlot(), No2AllArtServerSocketOnClose.class, y -> {
|
||||
System.out.println("RelayServer client-close: " + y.getData().getCode() + " of: " + y.getTarget().getSlotPath());
|
||||
});
|
||||
});
|
||||
react.registrate(serverSlot, OjwWireServer.class, x -> { // TODO: add interface matching ...
|
||||
server = x.getData();
|
||||
});
|
||||
});
|
||||
System.out.println("RelayServer fire configs");
|
||||
OjwWireServerEndpoint serverEndpoint = new OjwWireServerEndpoint(new InetSocketAddress(8080), 120);
|
||||
react.fire(No2AllRtsServer.API, new No2AllActServer(serverEndpoint));
|
||||
|
||||
for (int i=0;i<1000;i++) {
|
||||
//react.fire(No2AllServerRTS.API, react);
|
||||
Thread.sleep(100);
|
||||
}
|
||||
|
||||
Thread.sleep(40000);
|
||||
|
||||
if (server != null) {
|
||||
System.out.println("RelayServers stopping");
|
||||
server.getHandler().stop();
|
||||
}
|
||||
|
||||
//react.fireForEach(No2AllServerRTS.API, new No2AllActServerStop());
|
||||
System.out.println("RelayServers stopped");
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue