summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaohan Chen <yaohan.chen@gmail.com>2008-05-26 22:29:41 -0400
committerYaohan Chen <yaohan.chen@gmail.com>2008-05-27 21:16:26 -0400
commita41182b02b0b4f70e0a4e4ffff9c831207a87ba5 (patch)
tree4626adcabfa4b2b669fe6632adb4dfaa122eb9f2
parent4a5fa8f2ebab7fc4ee384c40fccaaff3a7b8c993 (diff)
add attribute BasicUserMessage#thread
this specifies whether the message handler is to be threaded, and overrides the map option if non-nil.
-rw-r--r--lib/rbot/message.rb7
-rw-r--r--lib/rbot/messagemapper.rb2
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)