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 InMemoryChatHomeService chatHomeService;
18 private final ShardingStrategy shardingStrategy;
19 private final Clock clock;
20 private final int bufferSize;
24 public Mono<ChatRoomInfo> createChatRoom(UUID id, String name)
26 log.info("Creating ChatRoom with buffer-size {}", bufferSize);
27 int shard = shardingStrategy.selectShard(id);
28 ChatRoomService service = new InMemoryChatRoomService(Flux.empty());
29 ChatRoom chatRoom = new ChatRoom(id, name, shard, clock, service, bufferSize);
30 chatHomeService.putChatRoom(chatRoom);
31 return Mono.just(chatRoom);