1 package de.juplo.kafka.chat.backend.persistence.inmemory;
3 import de.juplo.kafka.chat.backend.domain.*;
4 import lombok.RequiredArgsConstructor;
5 import lombok.extern.slf4j.Slf4j;
6 import reactor.core.publisher.Flux;
7 import reactor.core.publisher.Mono;
9 import java.time.Clock;
10 import java.util.UUID;
13 @RequiredArgsConstructor
15 public class InMemoryChatRoomFactory implements ChatRoomFactory
17 private final ShardingStrategy shardingStrategy;
18 private final Clock clock;
19 private final int bufferSize;
23 public Mono<ChatRoomInfo> createChatRoom(UUID id, String name)
25 log.info("Creating ChatRoom with buffer-size {}", bufferSize);
26 int shard = shardingStrategy.selectShard(id);
27 ChatRoomService service = new InMemoryChatRoomService(Flux.empty());
28 ChatRoom chatRoom = new ChatRoom(id, name, shard, clock, service, bufferSize);
29 chatHomeService.putChatRoom(chatRoom);
30 return Mono.just(chatRoom);