Skip to content

Commit 314d307

Browse files
committed
Optimize event data conversion logic in SseEventBus
1 parent 8a2977d commit 314d307

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

src/main/java/ch/rasc/sse/eventbus/SseEventBus.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,14 +328,16 @@ public void handleEvent(SseEvent event) {
328328
try {
329329

330330
String convertedValue = null;
331-
if (!(event.data() instanceof String)) {
332-
convertedValue = this.convertObject(event);
333-
}
331+
boolean converted = event.data() instanceof String;
334332

335333
if (event.clientIds().isEmpty()) {
336334
for (Client client : this.clients.values()) {
337335
if (!event.excludeClientIds().contains(client.getId())
338336
&& this.subscriptionRegistry.isClientSubscribedToEvent(client.getId(), event.event())) {
337+
if (!converted) {
338+
convertedValue = this.convertObject(event);
339+
converted = true;
340+
}
339341
ClientEvent clientEvent = new ClientEvent(client, event, convertedValue);
340342
this.sendQueue.put(clientEvent);
341343
this.listener.afterEventQueued(clientEvent, true);
@@ -347,6 +349,10 @@ public void handleEvent(SseEvent event) {
347349
Client client = this.clients.get(clientId);
348350
if (client != null
349351
&& this.subscriptionRegistry.isClientSubscribedToEvent(clientId, event.event())) {
352+
if (!converted) {
353+
convertedValue = this.convertObject(event);
354+
converted = true;
355+
}
350356
ClientEvent clientEvent = new ClientEvent(client, event, convertedValue);
351357
this.sendQueue.put(clientEvent);
352358
this.listener.afterEventQueued(clientEvent, true);

0 commit comments

Comments
 (0)