5e565281fc835bb505383aada86d80623328f7c9
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / implementation / kafka / ChannelTaskRunner.java
1 package de.juplo.kafka.chat.backend.implementation.kafka;
2
3 import lombok.RequiredArgsConstructor;
4 import lombok.extern.slf4j.Slf4j;
5
6
7 @RequiredArgsConstructor
8 @Slf4j
9 public class ChannelTaskRunner
10 {
11   private final ChannelTaskExecutor infoChannelTaskExecutor;
12   private final ChannelTaskExecutor dataChannelTaskExecutor;
13
14   public void executeChannels()
15   {
16     infoChannelTaskExecutor.executeChannelTask();
17     dataChannelTaskExecutor.executeChannelTask();
18   }
19
20   public void joinChannels() throws InterruptedException
21   {
22     joinChannel(dataChannelTaskExecutor);
23     joinChannel(infoChannelTaskExecutor);
24   }
25
26   private void joinChannel(
27       ChannelTaskExecutor channelTaskExecutor)
28       throws InterruptedException
29   {
30     Channel channel = channelTaskExecutor.getChannel();
31     while (channel.getChannelState() != ChannelState.SHUTTING_DOWN)
32     {
33       log.info("Waiting for {} to shut down...", channel);
34       Thread.sleep(1000);
35     }
36     channelTaskExecutor.join();
37   }
38 }