package org.bigbluebutton.red5.pubsub;
import java.util.Map;
import org.bigbluebutton.common.messages.*;
import org.bigbluebutton.red5.pubsub.redis.MessageSender;
public class MessagePublisher {
private MessageSender sender;
public void setMessageSender(MessageSender sender) {
this.sender = sender;
}
// Polling
public void votePoll(String meetingId, String userId, String pollId, Integer questionId, Integer answerId) {
VotePollUserRequestMessage msg = new VotePollUserRequestMessage(meetingId, userId, pollId, questionId, answerId);
sender.send(MessagingConstants.TO_POLLING_CHANNEL, msg.toJson());
}
public void sendPollingMessage(String json) {
sender.send(MessagingConstants.TO_POLLING_CHANNEL, json);
}
public void startPoll(String meetingId, String requesterId, String pollId, String pollType) {
StartPollRequestMessage msg = new StartPollRequestMessage(meetingId, requesterId, pollId, pollType);
sender.send(MessagingConstants.TO_POLLING_CHANNEL, msg.toJson());
}
public void stopPoll(String meetingId, String userId, String pollId) {
StopPollRequestMessage msg = new StopPollRequestMessage(meetingId, userId, pollId);
sender.send(MessagingConstants.TO_POLLING_CHANNEL, msg.toJson());
}
public void showPollResult(String meetingId, String requesterId, String pollId, Boolean show) {
ShowPollResultRequestMessage msg = new ShowPollResultRequestMessage(meetingId, requesterId, pollId, show);
sender.send(MessagingConstants.TO_POLLING_CHANNEL, msg.toJson());
}
public void initLockSettings(String meetingID, Map<String, Boolean> permissions) {
InitPermissionsSettingMessage msg = new InitPermissionsSettingMessage(meetingID, permissions);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void sendLockSettings(String meetingID, String userId, Map<String, Boolean> settings) {
SendLockSettingsMessage msg = new SendLockSettingsMessage(meetingID, userId, settings);
sender.send(MessagingConstants.TO_MEETING_CHANNEL, msg.toJson());
}
public void getLockSettings(String meetingId, String userId) {
GetLockSettingsMessage msg = new GetLockSettingsMessage(meetingId, userId);
sender.send(MessagingConstants.TO_MEETING_CHANNEL, msg.toJson());
}
public void lockUser(String meetingId, String requesterID, boolean lock, String internalUserID) {
LockUserMessage msg = new LockUserMessage(meetingId, requesterID, lock, internalUserID);
sender.send(MessagingConstants.TO_MEETING_CHANNEL, msg.toJson());
}
public void validateAuthToken(String meetingId, String userId, String token, String correlationId, String sessionId) {
ValidateAuthTokenMessage msg = new ValidateAuthTokenMessage(meetingId, userId, token, correlationId, sessionId);
sender.send(MessagingConstants.TO_MEETING_CHANNEL, msg.toJson());
}
public void userEmojiStatus(String meetingId, String userId, String emojiStatus) {
UserEmojiStatusMessage msg = new UserEmojiStatusMessage(meetingId, userId, emojiStatus);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void shareWebcam(String meetingId, String userId, String stream) {
UserShareWebcamRequestMessage msg = new UserShareWebcamRequestMessage(meetingId, userId, stream);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void unshareWebcam(String meetingId, String userId, String stream) {
UserUnshareWebcamRequestMessage msg = new UserUnshareWebcamRequestMessage(meetingId, userId, stream);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void setUserStatus(String meetingId, String userId, String status, Object value) {
SetUserStatusRequestMessage msg = new SetUserStatusRequestMessage(meetingId, userId, status, value.toString());
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void getUsers(String meetingId, String requesterId) {
GetUsersRequestMessage msg = new GetUsersRequestMessage(meetingId, requesterId);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void userLeft(String meetingId, String userId, String sessionId) {
UserLeavingMessage msg = new UserLeavingMessage(meetingId, userId);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void assignPresenter(String meetingId, String newPresenterID, String newPresenterName, String assignedBy) {
AssignPresenterRequestMessage msg = new AssignPresenterRequestMessage(meetingId, newPresenterID, newPresenterName, assignedBy);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void setRecordingStatus(String meetingId, String userId, Boolean recording) {
SetRecordingStatusRequestMessage msg = new SetRecordingStatusRequestMessage(meetingId, userId, recording);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void getRecordingStatus(String meetingId, String userId) {
GetRecordingStatusRequestMessage msg = new GetRecordingStatusRequestMessage(meetingId, userId);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void initAudioSettings(String meetingID, String requesterID, Boolean muted) {
InitAudioSettingsMessage msg = new InitAudioSettingsMessage(meetingID, requesterID, muted);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void muteAllExceptPresenter(String meetingID, String requesterID, Boolean mute) {
MuteAllExceptPresenterRequestMessage msg = new MuteAllExceptPresenterRequestMessage(meetingID, requesterID, mute);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void muteAllUsers(String meetingID, String requesterID, Boolean mute) {
MuteAllRequestMessage msg = new MuteAllRequestMessage(meetingID, requesterID, mute);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void isMeetingMuted(String meetingID, String requesterID) {
IsMeetingMutedRequestMessage msg = new IsMeetingMutedRequestMessage(meetingID, requesterID);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void muteUser(String meetingID, String requesterID, String userID, Boolean mute) {
MuteUserRequestMessage msg = new MuteUserRequestMessage(meetingID, requesterID, userID, mute);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void lockMuteUser(String meetingID, String requesterID, String userID, Boolean lock) {
LockMuteUserRequestMessage msg = new LockMuteUserRequestMessage(meetingID, requesterID, userID, lock);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void ejectUserFromVoice(String meetingID, String userId, String ejectedBy) {
EjectUserFromVoiceRequestMessage msg = new EjectUserFromVoiceRequestMessage(meetingID, ejectedBy, userId);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void ejectUserFromMeeting(String meetingId, String userId, String ejectedBy) {
EjectUserFromMeetingRequestMessage msg = new EjectUserFromMeetingRequestMessage(meetingId, userId, ejectedBy);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void removePresentation(String meetingID, String presentationID) {
RemovePresentationMessage msg = new RemovePresentationMessage(meetingID, presentationID);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void getPresentationInfo(String meetingID, String requesterID, String replyTo) {
GetPresentationInfoMessage msg = new GetPresentationInfoMessage(meetingID, requesterID, replyTo);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void sendCursorUpdate(String meetingID, double xPercent, double yPercent) {
SendCursorUpdateMessage msg = new SendCursorUpdateMessage(meetingID, xPercent, yPercent);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void resizeAndMoveSlide(String meetingID, double xOffset, double yOffset, double widthRatio, double heightRatio) {
ResizeAndMoveSlideMessage msg = new ResizeAndMoveSlideMessage(meetingID, xOffset, yOffset, widthRatio, heightRatio);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void gotoSlide(String meetingID, String page) {
GoToSlideMessage msg = new GoToSlideMessage(meetingID, page);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void sharePresentation(String meetingID, String presentationID, boolean share) {
SharePresentationMessage msg = new SharePresentationMessage(meetingID, presentationID, share);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void getSlideInfo(String meetingID, String requesterID, String replyTo) {
GetSlideInfoMessage msg = new GetSlideInfoMessage(meetingID, requesterID, replyTo);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void sendConversionUpdate(String messageKey, String meetingId, String code, String presId, String presName) {
SendConversionUpdateMessage msg = new SendConversionUpdateMessage(messageKey, meetingId, code, presId, presName);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void sendPageCountError(String messageKey, String meetingId, String code, String presId, int numberOfPages, int maxNumberPages, String presName) {
SendPageCountErrorMessage msg = new SendPageCountErrorMessage(messageKey, meetingId, code, presId, numberOfPages, maxNumberPages, presName);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void sendSlideGenerated(String messageKey, String meetingId, String code, String presId, int numberOfPages, int pagesCompleted, String presName) {
SendSlideGeneratedMessage msg = new SendSlideGeneratedMessage(messageKey, meetingId, code, presId, numberOfPages, pagesCompleted, presName);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void sendConversionCompleted(String messageKey, String meetingId,
String code, String presId, int numPages, String presName,
String presBaseUrl) {
SendConversionCompletedMessage msg = new SendConversionCompletedMessage(messageKey, meetingId,
code, presId, numPages, presName, presBaseUrl);
sender.send(MessagingConstants.TO_PRESENTATION_CHANNEL, msg.toJson());
}
public void getCurrentLayout(String meetingID, String requesterID) {
GetCurrentLayoutRequestMessage msg = new GetCurrentLayoutRequestMessage(meetingID, requesterID);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void broadcastLayout(String meetingID, String requesterID, String layout) {
BroadcastLayoutRequestMessage msg = new BroadcastLayoutRequestMessage(meetingID, requesterID, layout);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
public void getChatHistory(String meetingID, String requesterID, String replyTo) {
GetChatHistoryRequestMessage msg = new GetChatHistoryRequestMessage(meetingID, requesterID, replyTo);
sender.send(MessagingConstants.TO_CHAT_CHANNEL, msg.toJson());
}
public void sendPublicMessage(String meetingID, String requesterID, Map<String, String> message) {
SendPublicChatMessage msg = new SendPublicChatMessage(meetingID, requesterID, message);
sender.send(MessagingConstants.TO_CHAT_CHANNEL, msg.toJson());
}
public void sendPrivateMessage(String meetingID, String requesterID, Map<String, String> message) {
SendPrivateChatMessage msg = new SendPrivateChatMessage(meetingID, requesterID, message);
sender.send(MessagingConstants.TO_CHAT_CHANNEL, msg.toJson());
}
public void requestDeskShareInfo(String meetingID, String requesterID, String replyTo) {
DeskShareGetInfoRequestMessage msg = new DeskShareGetInfoRequestMessage(meetingID, requesterID, replyTo);
sender.send(MessagingConstants.FROM_VOICE_CONF_SYSTEM_CHAN, msg.toJson());
}
public void sendWhiteboardAnnotation(String meetingID, String requesterID, Map<String, Object> annotation) {
SendWhiteboardAnnotationRequestMessage msg = new SendWhiteboardAnnotationRequestMessage(meetingID, requesterID, annotation);
sender.send(MessagingConstants.TO_WHITEBOARD_CHANNEL, msg.toJson());
}
public void requestWhiteboardAnnotationHistory(String meetingID, String requesterID, String whiteboardId, String replyTo) {
RequestWhiteboardAnnotationHistoryRequestMessage msg = new RequestWhiteboardAnnotationHistoryRequestMessage(meetingID, requesterID, whiteboardId, replyTo);
sender.send(MessagingConstants.TO_WHITEBOARD_CHANNEL, msg.toJson());
}
public void clearWhiteboard(String meetingID, String requesterID, String whiteboardId) {
ClearWhiteboardRequestMessage msg = new ClearWhiteboardRequestMessage(meetingID, requesterID, whiteboardId);
sender.send(MessagingConstants.TO_WHITEBOARD_CHANNEL, msg.toJson());
}
public void undoWhiteboard(String meetingID, String requesterID, String whiteboardId) {
org.bigbluebutton.common.messages.UndoWhiteboardRequest msg = new org.bigbluebutton.common.messages.UndoWhiteboardRequest(meetingID, requesterID, whiteboardId);
sender.send(MessagingConstants.TO_WHITEBOARD_CHANNEL, msg.toJson());
}
public void enableWhiteboard(String meetingID, String requesterID, Boolean enable) {
EnableWhiteboardRequestMessage msg = new EnableWhiteboardRequestMessage(meetingID, requesterID, enable);
sender.send(MessagingConstants.TO_WHITEBOARD_CHANNEL, msg.toJson());
}
public void isWhiteboardEnabled(String meetingID, String requesterID, String replyTo) {
IsWhiteboardEnabledRequestMessage msg = new IsWhiteboardEnabledRequestMessage(meetingID, requesterID, replyTo);
sender.send(MessagingConstants.TO_WHITEBOARD_CHANNEL, msg.toJson());
}
public void lockLayout(String meetingID, String setById, boolean lock, boolean viewersOnly, String layout) {
LockLayoutRequestMessage msg = new LockLayoutRequestMessage(meetingID, setById, lock, viewersOnly, layout);
sender.send(MessagingConstants.TO_USERS_CHANNEL, msg.toJson());
}
// could be improved by doing some factorization
public void getBreakoutRoomsList(String jsonMessage) {
sender.send(MessagingConstants.TO_USERS_CHANNEL, jsonMessage);
}
public void createBreakoutRooms(String jsonMessage) {
sender.send(MessagingConstants.TO_USERS_CHANNEL, jsonMessage);
}
public void requestBreakoutJoinURL(String jsonMessage) {
sender.send(MessagingConstants.TO_USERS_CHANNEL, jsonMessage);
}
public void listenInOnBreakout(String jsonMessage) {
sender.send(MessagingConstants.TO_USERS_CHANNEL, jsonMessage);
}
public void endAllBreakoutRooms(String jsonMessage) {
sender.send(MessagingConstants.TO_USERS_CHANNEL, jsonMessage);
}
public void sendCaptionHistory(String meetingID, String requesterID) {
SendCaptionHistoryRequestMessage msg = new SendCaptionHistoryRequestMessage(meetingID, requesterID);
sender.send(MessagingConstants.TO_CAPTION_CHANNEL, msg.toJson());
}
public void updateCaptionOwner(String meetingID, String locale, String localeCode, String ownerID) {
UpdateCaptionOwnerMessage msg = new UpdateCaptionOwnerMessage(meetingID, locale, localeCode, ownerID);
sender.send(MessagingConstants.TO_CAPTION_CHANNEL, msg.toJson());
}
public void editCaptionHistory(String meetingID, String userID, Integer startIndex, Integer endIndex, String locale, String localeCode, String text) {
EditCaptionHistoryMessage msg = new EditCaptionHistoryMessage(meetingID, userID, startIndex, endIndex, locale, localeCode, text);
sender.send(MessagingConstants.TO_CAPTION_CHANNEL, msg.toJson());
}
}