Mono<ChatRoomInfo> getChatRoomInfo(UUID id);
+ default void removeChatRoom(UUID id) {}
+
Flux<ChatRoomInfo> getChatRoomInfo();
Mono<ChatRoomData> getChatRoomData(UUID id);
package de.juplo.kafka.chat.backend.implementation.inmemory;
-import de.juplo.kafka.chat.backend.domain.*;
+import de.juplo.kafka.chat.backend.domain.ChatHomeService;
+import de.juplo.kafka.chat.backend.domain.ChatRoomData;
+import de.juplo.kafka.chat.backend.domain.ChatRoomInfo;
import de.juplo.kafka.chat.backend.domain.exceptions.ShardNotOwnedException;
import de.juplo.kafka.chat.backend.domain.exceptions.UnknownChatroomException;
import de.juplo.kafka.chat.backend.implementation.ShardingStrategy;
: chatHomes[shard]
.getChatRoomInfo(id)
.onErrorMap(throwable -> throwable instanceof UnknownChatroomException
- ? new UnknownChatroomException(
+ ? new UnknownChatroomException(
id,
shard,
ownedShards.stream().mapToInt(i -> i.intValue()).toArray())
- : throwable);
+ : throwable);
+ }
+
+ @Override
+ public void removeChatRoom(UUID id)
+ {
+ int shard = selectShard(id);
+ chatHomes[shard].removeChatRoom(id);
}
@Override
package de.juplo.kafka.chat.backend.implementation.inmemory;
-import de.juplo.kafka.chat.backend.domain.*;
+import de.juplo.kafka.chat.backend.domain.ChatHomeService;
+import de.juplo.kafka.chat.backend.domain.ChatMessageService;
+import de.juplo.kafka.chat.backend.domain.ChatRoomData;
+import de.juplo.kafka.chat.backend.domain.ChatRoomInfo;
import de.juplo.kafka.chat.backend.domain.exceptions.UnknownChatroomException;
import de.juplo.kafka.chat.backend.implementation.StorageStrategy;
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Mono;
import java.time.Clock;
-import java.util.*;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
@Slf4j
.switchIfEmpty(Mono.error(() -> new UnknownChatroomException(id)));
}
+ @Override
+ public void removeChatRoom(UUID id)
+ {
+ chatRoomInfo.remove(id);
+ }
+
@Override
public Flux<ChatRoomInfo> getChatRoomInfo()
{