diff options
author | Yaohan Chen <yaohan.chen@gmail.com> | 2008-05-26 22:29:41 -0400 |
---|---|---|
committer | Yaohan Chen <yaohan.chen@gmail.com> | 2008-05-27 21:16:26 -0400 |
commit | a41182b02b0b4f70e0a4e4ffff9c831207a87ba5 (patch) | |
tree | 4626adcabfa4b2b669fe6632adb4dfaa122eb9f2 /lib | |
parent | 4a5fa8f2ebab7fc4ee384c40fccaaff3a7b8c993 (diff) |
add attribute BasicUserMessage#thread
this specifies whether the message handler is to be threaded, and overrides the map
option if non-nil.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rbot/message.rb | 7 | ||||
-rw-r--r-- | lib/rbot/messagemapper.rb | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/rbot/message.rb b/lib/rbot/message.rb index 99f4bb7f..ba0d8cc9 100644 --- a/lib/rbot/message.rb +++ b/lib/rbot/message.rb @@ -132,6 +132,12 @@ module Irc attr_accessor :ignored alias :ignored? :ignored + # should the message handler be excuted in new thread? + # if set to true or false, this overrides :thread option in map. if it's nil, + # the map option takes effect + attr_accessor :thread + alias :thread? :thread + # instantiate a new Message # bot:: associated bot class # server:: Server where the message took place @@ -150,6 +156,7 @@ module Irc @replied = false @server = server @ignored = false + @thread = nil @identified = false if @msg_wants_id && @server.capabilities[:"identify-msg"] diff --git a/lib/rbot/messagemapper.rb b/lib/rbot/messagemapper.rb index b08a503f..2b9fc5e3 100644 --- a/lib/rbot/messagemapper.rb +++ b/lib/rbot/messagemapper.rb @@ -207,7 +207,7 @@ class Bot debug "checking auth for #{auth}" if m.bot.auth.allow?(auth, m.source, m.replyto) debug "template match found and auth'd: #{action.inspect} #{options.inspect}" - if tmpl.options[:thread] || tmpl.options[:threaded] + if m.thread || (m.thread == nil && tmpl.options[:thread] || tmpl.options[:threaded]) Thread.new do begin @parent.send(action, m, options) |