X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fpersistence%2Finmemory%2FInMemoryChatHomeService.java;h=29f1312733e569d87b6075b99ad79712939886c8;hb=e9a4bf3c31d504611fba0cc0be4a1e04812e2c65;hp=fd54d34c5ba758cf8788f4b0135a87a950e689cc;hpb=2095f4c6a102a52f2a15360d1b6355e4990f8f43;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/persistence/inmemory/InMemoryChatHomeService.java b/src/main/java/de/juplo/kafka/chat/backend/persistence/inmemory/InMemoryChatHomeService.java index fd54d34c..29f13127 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/persistence/inmemory/InMemoryChatHomeService.java +++ b/src/main/java/de/juplo/kafka/chat/backend/persistence/inmemory/InMemoryChatHomeService.java @@ -1,16 +1,16 @@ package de.juplo.kafka.chat.backend.persistence.inmemory; import de.juplo.kafka.chat.backend.domain.ChatRoom; -import de.juplo.kafka.chat.backend.domain.ChatHomeService; import lombok.extern.slf4j.Slf4j; 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[] chatrooms; @@ -51,20 +51,24 @@ public class InMemoryChatHomeService implements ChatHomeService .forEach(chatroom -> chatrooms[chatroom.getShard()].put(chatroom.getId(), chatroom)); } - @Override - public Mono putChatRoom(ChatRoom chatRoom) + public void putChatRoom(ChatRoom chatRoom) { chatrooms[chatRoom.getShard()].put(chatRoom.getId(), chatRoom); - return Mono.just(chatRoom); } - @Override public Mono 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 getChatRooms(int shard) { return Flux.fromStream(chatrooms[shard].values().stream());