Q&D split of websocket slots for nether db

This commit is contained in:
Willem Cazander 2024-12-17 12:38:43 +01:00
parent cf9d258ad0
commit c5e5f52826
15 changed files with 184 additions and 102 deletions

View file

@ -45,25 +45,26 @@ import love.distributedrebirth.nx01.no2all.react.wire.client.No2AllActClientClos
import love.distributedrebirth.nx01.no2all.react.wire.client.No2AllActClientSendMessage;
import love.distributedrebirth.nx01.no2all.react.wire.client.No2AllArtClient;
import love.distributedrebirth.nx01.no2all.react.wire.client.No2AllArtClientOnMessage;
import love.distributedrebirth.nx01.no2all.react.wire.client.No2AllRtsClient;
import love.distributedrebirth.nx01.warp.core.react.WarpReact;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaCoil;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaPulse;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScript;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScriptPlasmaAdapter;
import love.distributedrebirth.nx01.warp.core.space.WarpSpaceAntimatterInducer;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public class NoStrRtsClient implements WarpReactTypeScript {
public class NoStrRtsClient extends WarpReactTypeScriptPlasmaAdapter {
public static final WarpReactPlasma API = WarpReactPlasma.ofClass(NoStrRtsClient.class);
public NoStrRtsClient(WarpReactPlasma antimatterVortexSlot) {
super(antimatterVortexSlot);
}
@Override
public void onEvent(WarpReactPlasmaPulse<WarpSpaceAntimatterInducer> signal) {
WarpReact react = signal.getReact();
react.claim(API);
react.registrate(No2AllRtsClient.API, No2AllArtClient.class, artClient -> {
WarpReactPlasma slot = getAntimatterVortexSlot();
react.registrate(slot, No2AllArtClient.class, artClient -> {
WarpReactPlasma clientSlot = artClient.getData().getSlot();
react.claimIn(clientSlot, NoStrMsgToRelayAuth.class);
react.claimIn(clientSlot, NoStrMsgToRelayClose.class);

View file

@ -47,30 +47,30 @@ import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllActServerSock
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllArtServer;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllArtServerSocket;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllArtServerSocketOnMessage;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllRtsServer;
import love.distributedrebirth.nx01.warp.core.react.WarpReact;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaCoil;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaPulse;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScript;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScriptPlasmaAdapter;
import love.distributedrebirth.nx01.warp.core.space.WarpSpaceAntimatterInducer;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public class NoStrRtsServer implements WarpReactTypeScript {
public class NoStrRtsServer extends WarpReactTypeScriptPlasmaAdapter {
public static final WarpReactPlasma API = WarpReactPlasma.ofClass(NoStrRtsServer.class);
public NoStrRtsServer(WarpReactPlasma antimatterVortexSlot) {
super(antimatterVortexSlot);
}
@Override
public void onEvent(WarpReactPlasmaPulse<WarpSpaceAntimatterInducer> signal) {
WarpReact 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()));
WarpReactPlasma slot = getAntimatterVortexSlot();
react.claimIn(slot, NoStrMsgToClientNotice.class);
react.registrate(slot, NoStrMsgToClientNotice.class, v -> {
react.fireForEach(slot, new No2AllActServerBroadcastMessage(v.getData().toBible().toString()));
});
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, artServer -> {
react.registrate(slot, No2AllArtServer.class, artServer -> {
WarpReactPlasma serverSlot = artServer.getData().getSlot();
react.claimIn(serverSlot, NoStrMsgToClientNotice.class);
react.registrate(serverSlot, No2AllArtServerSocket.class, artSocket -> {

View file

@ -34,41 +34,42 @@ import love.distributedrebirth.nx01.no2all.nostr.model.event.NoStrEventSignature
import love.distributedrebirth.nx01.no2all.nostr.model.message.NoStrMsgToClientOk;
import love.distributedrebirth.nx01.no2all.nostr.model.message.NoStrMsgToRelayEvent;
import love.distributedrebirth.nx01.no2all.nostr.nip.NoStrImplMessageOkReason;
import love.distributedrebirth.nx01.no2all.react.nostr.server.NoStrRtsServer;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllArtServer;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllArtServerSocket;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllRtsServer;
import love.distributedrebirth.nx01.warp.core.react.WarpReact;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaPulse;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScript;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScriptPlasmaAdapter;
import love.distributedrebirth.nx01.warp.core.space.WarpSpaceAntimatterInducer;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public class NoStrRtsServerRelay implements WarpReactTypeScript {
public class NoStrRtsServerRelay extends WarpReactTypeScriptPlasmaAdapter {
public static final WarpReactPlasma API = WarpReactPlasma.ofClass(NoStrRtsServerRelay.class);
private static final Logger logger = Logger.getLogger(NoStrRtsServerRelay.class.getName());
public NoStrRtsServerRelay(WarpReactPlasma antimatterVortexSlot) {
super(antimatterVortexSlot);
}
@Override
public void onEvent(WarpReactPlasmaPulse<WarpSpaceAntimatterInducer> signal) {
WarpReact react = signal.getReact();
react.claim(API);
react.claimOut(API, NoStrArtServerRelayStoreEvent.class);
react.requireSlot(API, NoStrRtsServer.API);
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, artServer -> {
WarpReactPlasma slot = getAntimatterVortexSlot();
react.claimOut(slot, NoStrArtServerRelayStoreEvent.class);
react.registrate(slot, No2AllArtServer.class, artServer -> {
WarpReactPlasma serverSlot = artServer.getData().getSlot();
react.registrate(serverSlot, No2AllArtServerSocket.class, artSocket -> {
WarpReactPlasma socketSlot = artSocket.getData().getSlot();
react.registrate(socketSlot, NoStrMsgToRelayEvent.class, v -> {
handleRelayEvent(react, v.getData().getEvent(), artSocket.getData().getRemoteAddr(), socketSlot);
handleRelayEvent(react, v.getData().getEvent(), artSocket.getData().getRemoteAddr(), socketSlot, slot);
});
});
});
}
private void handleRelayEvent(WarpReact react, NoStrEvent event, String remoteAddr, WarpReactPlasma socketSlot) {
private void handleRelayEvent(WarpReact react, NoStrEvent event, String remoteAddr, WarpReactPlasma socketSlot, WarpReactPlasma serverSlot) {
boolean eventSaved = false;
String eventResponse = "";
NoStrImplMessageOkReason eventReason = NoStrImplMessageOkReason.DEFAULT;
@ -87,7 +88,7 @@ public class NoStrRtsServerRelay implements WarpReactTypeScript {
if (eventSaved) {
react.fire(API, new NoStrArtServerRelayStoreEvent(event, remoteAddr));
react.fire(serverSlot, new NoStrArtServerRelayStoreEvent(event, remoteAddr));
}
react.fire(socketSlot, new NoStrMsgToClientOk(event.getId(), eventSaved, eventReason, eventResponse));
}

View file

@ -31,25 +31,25 @@ import love.distributedrebirth.nx01.no2all.nostr.model.message.NoStrMsgToRelayCl
import love.distributedrebirth.nx01.no2all.nostr.model.message.NoStrMsgToRelayReq;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllArtServer;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllArtServerSocket;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllRtsServer;
import love.distributedrebirth.nx01.warp.core.react.WarpReact;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaPulse;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScript;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScriptPlasmaAdapter;
import love.distributedrebirth.nx01.warp.core.space.WarpSpaceAntimatterInducer;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public class NoStrRtsServerRelaySubs implements WarpReactTypeScript {
public class NoStrRtsServerRelaySubs extends WarpReactTypeScriptPlasmaAdapter {
public static final WarpReactPlasma API = WarpReactPlasma.ofClass(NoStrRtsServerRelaySubs.class);
public NoStrRtsServerRelaySubs(WarpReactPlasma antimatterVortexSlot) {
super(antimatterVortexSlot);
}
@Override
public void onEvent(WarpReactPlasmaPulse<WarpSpaceAntimatterInducer> signal) {
WarpReact react = signal.getReact();
react.claim(API);
react.requireSlot(API, NoStrRtsServerRelay.API);
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, v -> {
WarpReactPlasma slot = getAntimatterVortexSlot();
react.registrate(slot, No2AllArtServer.class, v -> {
WarpReactPlasma serverSlot = v.getData().getSlot();
react.registrate(serverSlot, No2AllArtServerSocket.class, x -> {
WarpReactPlasma socketSlot = x.getData().getSlot();

View file

@ -39,7 +39,6 @@ import love.distributedrebirth.nx01.no2all.nostr.model.NoStrIdentityPrivateKey;
import love.distributedrebirth.nx01.no2all.nostr.model.event.NoStrEvent;
import love.distributedrebirth.nx01.no2all.nostr.model.message.NoStrMsgToRelayEvent;
import love.distributedrebirth.nx01.no2all.nostr.nip.NoStrImplEventKind;
import love.distributedrebirth.nx01.no2all.react.nostr.client.NoStrRtsClient;
import love.distributedrebirth.nx01.no2all.react.wire.client.No2AllActClient;
import love.distributedrebirth.nx01.no2all.react.wire.client.No2AllActClientClose;
import love.distributedrebirth.nx01.no2all.react.wire.client.No2AllActClientConnect;
@ -63,11 +62,13 @@ public class NoStrClientTest {
ExecutorService executor = Executors.newFixedThreadPool(10);
NoStrIdentity nid = new NoStrIdentity(NoStrIdentityPrivateKey.ofRandom());
WarpCoreReactor react = new WarpCoreReactor();
WarpReactPlasma mushroomClient = WarpReactPlasma.ofClass(NoStrClientTest.class);
react.claim(mushroomClient);
react.load(new WarpCoreSpeedMonitor());
react.load(new No2AllRtsClient());
react.load(new NoStrRtsClient());
react.load(new No2AllRtsClient(mushroomClient));
react.load(new NoStrRtsClient(mushroomClient));
react.registrate(No2AllRtsClient.API, No2AllArtClient.class, v -> {
react.registrate(mushroomClient, No2AllArtClient.class, v -> {
WarpReactPlasma clientSlot = v.getData().getSlot();
System.out.println("NoStrClient created: " + clientSlot.getSlotPath());
react.registrate(clientSlot, No2AllArtClientOnError.class, x -> {
@ -112,7 +113,7 @@ public class NoStrClientTest {
OjwWireClientEndpoint clientEndpoint = new OjwWireClientEndpoint(new URI("ws://localhost:8080/ws/nostr"));
System.out.println("NoStrClient start");
react.fire(No2AllRtsClient.API, new No2AllActClient(clientEndpoint));
react.fire(mushroomClient, new No2AllActClient(clientEndpoint));
Thread.sleep(30000);
@ -126,7 +127,7 @@ public class NoStrClientTest {
e2.printStackTrace();
}
System.out.println("NoStrClient stopping");
react.fireForEach(No2AllRtsClient.API, No2AllActClientClose.ofNormal("exit"));
react.fireForEach(mushroomClient, No2AllActClientClose.ofNormal("exit"));
System.out.println("NoStrClient stopped");
});
exitTimer.start();

View file

@ -29,7 +29,6 @@ package love.distributedrebirth.nx01.no2all.react.nostr.server;
import java.net.InetSocketAddress;
import love.distributedrebirth.nx01.no2all.react.nostr.server.NoStrRtsServer;
import love.distributedrebirth.nx01.no2all.react.nostr.server.relay.NoStrRtsServerRelay;
import love.distributedrebirth.nx01.no2all.react.nostr.server.relay.NoStrRtsServerRelaySubs;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllActServer;
@ -50,15 +49,17 @@ import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
public class NoStrServerTest {
static OjwWireServer server = null;
public static void main(String[] args) throws Exception {
WarpReactPlasma mushroomServer = WarpReactPlasma.ofClass(NoStrServerTest.class);
WarpCoreReactor react = new WarpCoreReactor();
react.claim(mushroomServer);
react.load(new WarpCoreSpeedMonitor());
react.load(new No2AllRtsServer());
react.load(new No2AllRtsServerLog());
react.load(new NoStrRtsServer());
react.load(new NoStrRtsServerRelay());
react.load(new NoStrRtsServerRelaySubs());
react.load(new No2AllRtsServer(mushroomServer));
react.load(new No2AllRtsServerLog(mushroomServer));
react.load(new NoStrRtsServer(mushroomServer));
react.load(new NoStrRtsServerRelay(mushroomServer));
react.load(new NoStrRtsServerRelaySubs(mushroomServer));
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, artServer -> {
react.registrate(mushroomServer, No2AllArtServer.class, artServer -> {
WarpReactPlasma serverSlot = artServer.getData().getSlot();
react.registrate(serverSlot, No2AllArtServerOnStart.class, v -> {
System.out.println("RelayServer started: " + v.getTarget().getSlotSlug());
@ -75,7 +76,7 @@ public class NoStrServerTest {
});
System.out.println("RelayServer fire configs");
OjwWireServerEndpoint serverEndpoint = new OjwWireServerEndpoint(new InetSocketAddress(8080), 120);
react.fire(No2AllRtsServer.API, new No2AllActServer(serverEndpoint));
react.fire(mushroomServer, new No2AllActServer(serverEndpoint));
for (int i=0;i<1000;i++) {
//react.fire(No2AllServerRTS.API, react);

View file

@ -35,24 +35,26 @@ import love.distributedrebirth.nx01.no2all.wire.WireClientHandler;
import love.distributedrebirth.nx01.warp.core.react.WarpReact;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaPulse;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScript;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScriptPlasmaAdapter;
import love.distributedrebirth.nx01.warp.core.space.WarpSpaceAntimatterInducer;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public class No2AllRtsClient implements WarpReactTypeScript {
public class No2AllRtsClient extends WarpReactTypeScriptPlasmaAdapter {
public static final WarpReactPlasma API = WarpReactPlasma.ofClass(No2AllRtsClient.class);
public No2AllRtsClient(WarpReactPlasma antimatterVortex) {
super(antimatterVortex);
}
@Override
public void onEvent(WarpReactPlasmaPulse<WarpSpaceAntimatterInducer> signal) {
WarpReact react = signal.getReact();
react.claim(API);
react.claimIn(API, No2AllActClient.class);
react.claimOut(API, No2AllArtClient.class);
react.registrate(API, No2AllActClient.class, actClient -> {
WarpReactPlasma slot = getAntimatterVortexSlot();
react.claimIn(slot, No2AllActClient.class);
react.claimOut(slot, No2AllArtClient.class);
react.registrate(slot, No2AllActClient.class, actClient -> {
WireClientEndpoint clientEndpoint = actClient.getData().getEndpoint();
WarpReactPlasma clientSlot = WarpReactPlasma.of(API, "wireId=" + clientEndpoint.wireId());
WarpReactPlasma clientSlot = WarpReactPlasma.of(slot, "wireId=" + clientEndpoint.wireId());
WireClient client = clientEndpoint.wireClient(wireHandler(react, clientSlot));
react.claim(clientSlot);
react.claimIn(clientSlot, No2AllActClientConnect.class);
@ -78,7 +80,7 @@ public class No2AllRtsClient implements WarpReactTypeScript {
react.registrate(clientSlot, No2AllActClientSendBinary.class, v -> {
client.sendBinary(v.getData().getMessage());
});
react.fire(API, new No2AllArtClient(clientSlot));
react.fire(slot, new No2AllArtClient(clientSlot));
react.fire(clientSlot, client);
});
}

View file

@ -36,24 +36,26 @@ import love.distributedrebirth.nx01.no2all.wire.WireServerSocket;
import love.distributedrebirth.nx01.warp.core.react.WarpReact;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaPulse;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScript;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScriptPlasmaAdapter;
import love.distributedrebirth.nx01.warp.core.space.WarpSpaceAntimatterInducer;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public class No2AllRtsServer implements WarpReactTypeScript {
public class No2AllRtsServer extends WarpReactTypeScriptPlasmaAdapter {
public static final WarpReactPlasma API = WarpReactPlasma.ofClass(No2AllRtsServer.class);
public No2AllRtsServer(WarpReactPlasma antimatterVortexSlot) {
super(antimatterVortexSlot);
}
@Override
public void onEvent(WarpReactPlasmaPulse<WarpSpaceAntimatterInducer> signal) {
WarpReact react = signal.getReact();
react.claim(API);
react.claimIn(API, No2AllActServer.class);
react.claimOut(API, No2AllArtServer.class);
react.registrate(API, No2AllActServer.class, actServer -> {
WarpReactPlasma slot = getAntimatterVortexSlot();
react.claimIn(slot, No2AllActServer.class);
react.claimOut(slot, No2AllArtServer.class);
react.registrate(slot, No2AllActServer.class, actServer -> {
WireServerEndpoint serverEndpoint = actServer.getData().getEndpoint();
WarpReactPlasma serverSlot = WarpReactPlasma.of(API, "wireId=" + serverEndpoint.wireId());
WarpReactPlasma serverSlot = WarpReactPlasma.of(slot, "wireId=" + serverEndpoint.wireId());
WireServer server = serverEndpoint.wireServer(wireHandler(react, serverSlot));
react.claim(serverSlot);
react.claimIn(serverSlot, No2AllActServerBroadcastMessage.class);
@ -68,7 +70,7 @@ public class No2AllRtsServer implements WarpReactTypeScript {
react.registrate(serverSlot, No2AllActServerBroadcastBinary.class, v -> {
server.broadcastBinary(v.getData().getMessage());
});
react.fire(API, new No2AllArtServer(serverSlot));
react.fire(slot, new No2AllArtServer(serverSlot));
react.fire(serverSlot, server);
});
}

View file

@ -32,21 +32,24 @@ import java.util.logging.Logger;
import love.distributedrebirth.nx01.warp.core.react.WarpReact;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaPulse;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScript;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScriptPlasmaAdapter;
import love.distributedrebirth.nx01.warp.core.space.WarpSpaceAntimatterInducer;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public class No2AllRtsServerLog implements WarpReactTypeScript {
public class No2AllRtsServerLog extends WarpReactTypeScriptPlasmaAdapter {
public static final WarpReactPlasma API = WarpReactPlasma.ofClass(No2AllRtsServerLog.class);
private static final Logger logger = Logger.getLogger(No2AllRtsServerLog.class.getName());
public No2AllRtsServerLog(WarpReactPlasma antimatterVortexSlot) {
super(antimatterVortexSlot);
}
@Override
public void onEvent(WarpReactPlasmaPulse<WarpSpaceAntimatterInducer> signal) {
WarpReact react = signal.getReact();
react.claim(API);
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, artServer -> {
WarpReactPlasma slot = getAntimatterVortexSlot();
react.registrate(slot, No2AllArtServer.class, artServer -> {
WarpReactPlasma serverSlot = artServer.getData().getSlot();
react.registrate(serverSlot, No2AllActServerBroadcastMessage.class, v -> {
logger.info("broadcastMessage: " + v.getData().getMessage());

View file

@ -67,6 +67,7 @@ public class EventServer {
private final ServerConnector connector;
private JettyWireServerEndpoint endpoint1;
private JettyWireServerEndpoint endpoint2;
private WarpReactPlasma mushroomServer = WarpReactPlasma.ofClass(EventServer.class);
public EventServer() {
server = new Server();
@ -86,12 +87,13 @@ public class EventServer {
public void lifeCycleStarted(LifeCycle event) {
LOG.info("Startup No2AllReactWarpCore");
WarpCoreReactor react = new WarpCoreReactor();
react.claim(mushroomServer);
react.load(new WarpCoreSpeedMonitor());
react.load(new No2AllRtsServer());
react.load(new No2AllRtsServerLog());
react.load(new No2AllRtsServer(mushroomServer));
react.load(new No2AllRtsServerLog(mushroomServer));
// auto reply
react.registrate(No2AllRtsServer.API, No2AllArtServer.class, artServer -> {
react.registrate(mushroomServer, No2AllArtServer.class, artServer -> {
WarpReactPlasma serverSlot = artServer.getData().getSlot();
react.registrate(serverSlot, No2AllArtServerSocket.class, artSocket -> {
WarpReactPlasma socketSlot = artSocket.getData().getSlot();
@ -100,8 +102,8 @@ public class EventServer {
});
});
});
react.fire(No2AllRtsServer.API, new No2AllActServer(endpoint1));
react.fire(No2AllRtsServer.API, new No2AllActServer(endpoint2));
react.fire(mushroomServer, new No2AllActServer(endpoint1));
react.fire(mushroomServer, new No2AllActServer(endpoint2));
}
});
}

View file

@ -94,6 +94,10 @@ public final class WarpReactPlasma {
return Objects.equals(slotPath, other.slotPath);
}
public static WarpReactPlasma ofClassQualified(Class<?> scriptClz, String qualifier) {
return new WarpReactPlasma(null, scriptClz.getPackageName() + ":type=" + scriptClz.getSimpleName() + ":name=" + qualifier);
}
public static WarpReactPlasma ofClass(Class<?> scriptClz) {
return new WarpReactPlasma(null, scriptClz.getPackageName() + ":type=" + scriptClz.getSimpleName());
}

View file

@ -0,0 +1,45 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package love.distributedrebirth.nx01.warp.core.react;
import java.util.Objects;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
abstract public class WarpReactTypeScriptPlasmaAdapter implements WarpReactTypeScript {
private final WarpReactPlasma antimatterVortexSlot;
public WarpReactTypeScriptPlasmaAdapter(WarpReactPlasma antimatterVortexSlot) {
this.antimatterVortexSlot = Objects.requireNonNull(antimatterVortexSlot);
}
public final WarpReactPlasma getAntimatterVortexSlot() {
return antimatterVortexSlot;
}
}

View file

@ -39,27 +39,28 @@ import jakarta.json.Json;
import jakarta.json.JsonWriter;
import love.distributedrebirth.nx01.no2all.nostr.model.event.NoStrEvent;
import love.distributedrebirth.nx01.no2all.react.nostr.server.relay.NoStrArtServerRelayStoreEvent;
import love.distributedrebirth.nx01.no2all.react.nostr.server.relay.NoStrRtsServerRelay;
import love.distributedrebirth.nx01.warp.core.react.WarpReact;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaPulse;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScript;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScriptPlasmaAdapter;
import love.distributedrebirth.nx01.warp.core.space.WarpSpaceAntimatterInducer;
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
public class ZFunRtsServer implements WarpReactTypeScript {
public class ZFunRtsServer extends WarpReactTypeScriptPlasmaAdapter {
public static final WarpReactPlasma API = WarpReactPlasma.ofClass(ZFunRtsServer.class);
private static final Logger logger = Logger.getLogger(ZFunRtsServer.class.getName());
public ZFunRtsServer(WarpReactPlasma antimatterVortexSlot) {
super(antimatterVortexSlot);
}
@Override
public void onEvent(WarpReactPlasmaPulse<WarpSpaceAntimatterInducer> signal) {
WarpReact react = signal.getReact();
react.claim(API);
WarpReactPlasma slot = getAntimatterVortexSlot();
DataSource ds = react.service(DataSource.class);
react.registrate(NoStrRtsServerRelay.API, NoStrArtServerRelayStoreEvent.class, storeEvent -> {
react.registrate(slot, NoStrArtServerRelayStoreEvent.class, storeEvent -> {
logger.info("Store event: " + storeEvent.getData().getEvent().getId().getHexDipavali());
NoStrEvent event = storeEvent.getData().getEvent();
StringWriter jsonStr = new StringWriter();

View file

@ -47,6 +47,7 @@ import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllRtsServer;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllRtsServerLog;
import love.distributedrebirth.nx01.warp.core.WarpCoreReactor;
import love.distributedrebirth.nx01.warp.core.WarpCoreSpeedMonitor;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
import love.distributedrebirth.nx01.zerofungus.server.service.ZFunRtsConfigJetty;
import love.distributedrebirth.nx01.zerofungus.server.service.ZFunRtsInitJdbc;
@ -113,23 +114,34 @@ public enum ZeroFungus /* implements BãßBȍőnAbacusInstanceMBeanʸᴰ<ZeroFun
}
public void start() {
foei.claim(MUSHROOM_WARP_CORE);
foei.claim(MUSHROOM_CLIENT_NOSTR);
foei.claim(MUSHROOM_SERVER_NOSTR);
foei.claim(MUSHROOM_SERVER_HYPER);
foei.claim(MUSHROOM_SERVER_NETHER);
// debug warp monitor
foei.load(new WarpCoreSpeedMonitor());
// add websocket wire support + log
foei.load(new No2AllRtsClient());
foei.load(new No2AllRtsServer());
foei.load(new No2AllRtsServerLog());
foei.load(new No2AllRtsServer(MUSHROOM_SERVER_HYPER));
foei.load(new No2AllRtsServerLog(MUSHROOM_SERVER_HYPER));
// add nostr support
foei.load(new NoStrRtsClient());
foei.load(new NoStrRtsServer());
foei.load(new NoStrRtsServerRelay());
foei.load(new NoStrRtsServerRelaySubs());
foei.load(new No2AllRtsServer(MUSHROOM_SERVER_NETHER));
foei.load(new No2AllRtsServerLog(MUSHROOM_SERVER_NETHER));
foei.load(new No2AllRtsServer(MUSHROOM_SERVER_NOSTR));
foei.load(new No2AllRtsServerLog(MUSHROOM_SERVER_NOSTR));
foei.load(new NoStrRtsServer(MUSHROOM_SERVER_NOSTR));
foei.load(new NoStrRtsServerRelay(MUSHROOM_SERVER_NOSTR));
foei.load(new NoStrRtsServerRelaySubs(MUSHROOM_SERVER_NOSTR));
foei.load(new No2AllRtsClient(MUSHROOM_CLIENT_NOSTR));
foei.load(new NoStrRtsClient(MUSHROOM_CLIENT_NOSTR));
// config zero fungus servers and clients
foei.load(new ZFunRtsInitJdbc(foei));
foei.load(new ZFunRtsServer());
foei.load(new ZFunRtsServer(MUSHROOM_SERVER_NOSTR));
// foei.load(new ZFunRtsClientReplay());
// load jetties and join
@ -137,4 +149,11 @@ public enum ZeroFungus /* implements BãßBȍőnAbacusInstanceMBeanʸᴰ<ZeroFun
foei.load(new ZFunRtsServerBooted());
jetties.stream().findFirst().ifPresent(v -> v.join());
}
// TODO: redo plasma name types and loading
public final static WarpReactPlasma MUSHROOM_WARP_CORE = WarpReactPlasma.ofClassQualified(ZeroFungus.class, "warp-core");
public final static WarpReactPlasma MUSHROOM_CLIENT_NOSTR = WarpReactPlasma.ofClassQualified(ZeroFungus.class, "client-nostr");
public final static WarpReactPlasma MUSHROOM_SERVER_NOSTR = WarpReactPlasma.ofClassQualified(ZeroFungus.class, "server-nostr");
public final static WarpReactPlasma MUSHROOM_SERVER_HYPER = WarpReactPlasma.ofClassQualified(ZeroFungus.class, "server-hyper");
public final static WarpReactPlasma MUSHROOM_SERVER_NETHER = WarpReactPlasma.ofClassQualified(ZeroFungus.class, "server-nether");
}

View file

@ -49,13 +49,13 @@ import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerI
import org.h2.server.web.JakartaWebServlet;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllActServer;
import love.distributedrebirth.nx01.no2all.react.wire.server.No2AllRtsServer;
import love.distributedrebirth.nx01.no2all.wire.jetty.JettyWireServerEndpoint;
import love.distributedrebirth.nx01.warp.core.react.WarpReact;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasma;
import love.distributedrebirth.nx01.warp.core.react.WarpReactPlasmaPulse;
import love.distributedrebirth.nx01.warp.core.react.WarpReactTypeScript;
import love.distributedrebirth.nx01.warp.core.space.WarpSpaceAntimatterInducer;
import love.distributedrebirth.nx01.zerofungus.server.ZeroFungus;
import love.distributedrebirth.nx01.zerofungus.server.web.RedirectServlet;
import love.distributedrebirth.nx01.zerofungus.server.web.WarpCorePlasmaInspectorServlet;
@ -122,9 +122,9 @@ public final class ZFunRtsConfigJetty implements WarpReactTypeScript {
server.addEventListener(new Listener() {
@Override
public void lifeCycleStarted(LifeCycle event) {
react.fire(No2AllRtsServer.API, new No2AllActServer(wsNostr)); // text
react.fire(No2AllRtsServer.API, new No2AllActServer(wsHyper)); // text + bin
react.fire(No2AllRtsServer.API, new No2AllActServer(wsNether)); // bin
react.fire(ZeroFungus.MUSHROOM_SERVER_NOSTR, new No2AllActServer(wsNostr)); // text
react.fire(ZeroFungus.MUSHROOM_SERVER_HYPER, new No2AllActServer(wsHyper)); // text + bin
react.fire(ZeroFungus.MUSHROOM_SERVER_NETHER, new No2AllActServer(wsNether)); // bin
}
});
try {