public static void HandleEvent(BeamEventMessage eventMessage, string underlayingMessage) { switch (eventMessage.@event) { default: throw new NotImplementedException(eventMessage.@event); case "WelcomeEvent": SendLoginEvent(); RelayEvent(EventHandlerTypes.WelcomeEvent, eventMessage, underlayingMessage); break; case "ChatMessage": RelayEvent(EventHandlerTypes.ChatMessageEvent, eventMessage, underlayingMessage); break; case "DeleteMessage": RelayEvent(EventHandlerTypes.DeleteMessage, eventMessage, underlayingMessage); break; case "PurgeMessage": RelayEvent(EventHandlerTypes.PurgeMessage, eventMessage, underlayingMessage); break; case "ClearMessages": RelayEvent(EventHandlerTypes.ClearMessages, eventMessage, underlayingMessage); break; case "UserUpdate": RelayEvent(EventHandlerTypes.UserUpdate, eventMessage, underlayingMessage); break; case "UserTimeout": RelayEvent(EventHandlerTypes.UserTimeout, eventMessage, underlayingMessage); break; // Because of some bizarre reasons, these are not documented to be a event. case "UserJoin": RelayEvent(EventHandlerTypes.UserJoin, eventMessage, underlayingMessage); break; case "UserLeave": RelayEvent(EventHandlerTypes.UserLeave, eventMessage, underlayingMessage); break; case "PollStart": RelayEvent(EventHandlerTypes.PollStart, eventMessage, underlayingMessage); break; case "PollEnd": RelayEvent(EventHandlerTypes.PollEnd, eventMessage, underlayingMessage); break; } }
/// <summary> /// Relays the event to all event functions. /// </summary> /// <param name="eventType">Type of the event.</param> /// <param name="eventMessage">The event message.</param> /// <param name="underlayingMessage">The underlaying message.</param> private static void RelayEvent(EventHandlerTypes eventType, BeamEventMessage eventMessage, string underlayingMessage) { foreach (var handler in _eventHandlers) { if (handler.Value == eventType) { handler.Key(eventMessage, underlayingMessage); } } }