From a41182b02b0b4f70e0a4e4ffff9c831207a87ba5 Mon Sep 17 00:00:00 2001 From: Yaohan Chen Date: Mon, 26 May 2008 22:29:41 -0400 Subject: add attribute BasicUserMessage#thread this specifies whether the message handler is to be threaded, and overrides the map option if non-nil. --- lib/rbot/message.rb | 7 +++++++ lib/rbot/messagemapper.rb | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/rbot') 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) -- cgit v1.2.3