Skip to content

Commit 248e39f

Browse files
committed
fire and forget presence
1 parent e73eaf6 commit 248e39f

2 files changed

Lines changed: 38 additions & 4 deletions

File tree

proxy.api/src/main/java/net/swofty/proxyapi/redis/ServerOutboundMessage.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,42 @@ public static void sendMessageToService(ServiceType service,
9090
specification.channel(), message).toJSON().toString());
9191
}
9292

93+
/**
94+
* Fire-and-forget: send to a service and do not wait for or register a response.
95+
*/
96+
public static void sendMessageToServiceFireAndForget(ServiceType service,
97+
ProtocolObject specification,
98+
Object rawMessage) {
99+
UUID requestId = UUID.randomUUID();
100+
String callback = null;
101+
try {
102+
callback = RedisAPI.getInstance().getFilterId();
103+
} catch (Exception ignored) {
104+
}
105+
106+
String message = specification.translateToString(rawMessage);
107+
RedisAPI.getInstance().publishMessage(
108+
service.name(),
109+
ChannelRegistry.getFromName(specification.channel()),
110+
new ServiceProxyRequest(
111+
requestId,
112+
callback != null ? callback : "proxy",
113+
specification.channel(),
114+
message
115+
).toJSON().toString()
116+
);
117+
}
118+
119+
/**
120+
* Fire-and-forget broadcast to all service types.
121+
*/
122+
public static void sendMessageToAllServicesFireAndForget(ProtocolObject specification,
123+
Object rawMessage) {
124+
for (ServiceType serviceType : ServiceType.values()) {
125+
sendMessageToServiceFireAndForget(serviceType, specification, rawMessage);
126+
}
127+
}
128+
93129
private static String getRequestTypeName(ProtocolObject<?, ?> protocolObject) {
94130
Class<?> clazz = protocolObject.getClass();
95131
Type genericSuperclass = clazz.getGenericSuperclass();

velocity.extension/src/main/java/net/swofty/velocity/presence/PresencePublisher.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,9 @@ public static void publish(Player player, boolean online, String serverType, UUI
2222
System.currentTimeMillis()
2323
);
2424

25-
ServerOutboundMessage.sendMessageToService(
26-
ServiceType.FRIEND,
25+
ServerOutboundMessage.sendMessageToAllServicesFireAndForget(
2726
new UpdatePresenceProtocolObject(),
28-
new UpdatePresenceProtocolObject.UpdatePresenceMessage(info),
29-
(ignored) -> {}
27+
new UpdatePresenceProtocolObject.UpdatePresenceMessage(info)
3028
);
3129
}
3230

0 commit comments

Comments
 (0)