class MijDiscord::Events::EventDispatcher
Attributes
threads[R]
Public Class Methods
new(klass, bot)
click to toggle source
Calls superclass method
MijDiscord::Events::DispatcherBase::new
# File lib/mij-discord/events/basic.rb, line 66 def initialize(klass, bot) super(klass) @bot, @threads = bot, [] end
Public Instance Methods
execute_callback(callback, event, _)
click to toggle source
# File lib/mij-discord/events/basic.rb, line 72 def execute_callback(callback, event, _) Thread.new do thread = Thread.current @threads << thread thread[:mij_discord] = "event-#{callback.key}" begin callback.block.call(event, callback.key) rescue LocalJumpError # Allow premature return from callback block rescue => exc @bot.handle_exception(:event, exc, event) MijDiscord::LOGGER.error('Events') { 'An error occurred in event callback' } MijDiscord::LOGGER.error('Events') { exc } ensure @threads.delete(thread) end end end