package com.twasyl.slideshowfx.server.service;
import com.twasyl.slideshowfx.server.bus.EventBus;
import io.vertx.core.Handler;
import io.vertx.core.eventbus.Message;
import io.vertx.core.json.JsonObject;
import static com.twasyl.slideshowfx.server.service.IServicesCode.RESPONSE_CODE_MESSAGE_ADDED;
/**
* This class represents the presenter part of the internal SlideshowFX chat.
*
* @author Thierry Wasylczenko
* @version 1.0
* @since SlideshowFX 1.0
*/
public class PresenterChatService extends AbstractSlideshowFXService {
public static final String SERVICE_CHAT_PRESENTER_ON_MESSAGE = "service.chat.presenter.onMessage";
@Override
public void start() {
this.register(SERVICE_CHAT_PRESENTER_MESSAGE_ADD, this.buildMessageHandler());
}
@Override
public void stop() { this.unregisterAll(); }
private Handler<Message<JsonObject>> buildMessageHandler() {
final Handler<Message<JsonObject>> handler = message -> {
final JsonObject messageContent = message.body();
final JsonObject broadcastMessage = new JsonObject()
.put(JSON_KEY_BROADCAST_MESSAGE_TYPE, "chat-message")
.put(JSON_KEY_MESSAGE, messageContent);
EventBus.getInstance().broadcast(SERVICE_CHAT_PRESENTER_ON_MESSAGE, broadcastMessage);
message.reply(this.buildResponse(SERVICE_CHAT_PRESENTER_MESSAGE_ADD, RESPONSE_CODE_MESSAGE_ADDED, ""));
};
return handler;
}
}