feat: `UnknownChatroomException` records shard and owned shards
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / persistence / inmemory / InMemoryChatHomeService.java
index 381f5db..29f1312 100644 (file)
@@ -6,10 +6,11 @@ import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
 import java.util.*;
+import java.util.stream.IntStream;
 
 
 @Slf4j
-public class InMemoryChatHomeService implements ChatHomeService
+public class InMemoryChatHomeService
 {
   private final Map<UUID, ChatRoom>[] chatrooms;
 
@@ -55,13 +56,19 @@ public class InMemoryChatHomeService implements ChatHomeService
     chatrooms[chatRoom.getShard()].put(chatRoom.getId(), chatRoom);
   }
 
-  @Override
   public Mono<ChatRoom> getChatRoom(int shard, UUID id)
   {
     return Mono.justOrEmpty(chatrooms[shard].get(id));
   }
 
-  @Override
+  public int[] getOwnedShards()
+  {
+    return IntStream
+        .range(0, chatrooms.length)
+        .filter(i -> chatrooms[i] != null)
+        .toArray();
+  }
+
   public Flux<ChatRoom> getChatRooms(int shard)
   {
     return Flux.fromStream(chatrooms[shard].values().stream());