class RIMS::Protocol::MailDeliveryDecoder
Public Class Methods
new(parent_decoder, drb_services, auth, logger)
click to toggle source
Calls superclass method
RIMS::Protocol::Decoder::new
# File lib/rims/protocol/decoder.rb, line 2044 def initialize(parent_decoder, drb_services, auth, logger) super(auth, logger) @parent_decoder = parent_decoder @drb_services = drb_services @auth = auth @last_user_cache_key_username = nil @last_user_cache_value_engine = nil @logger.debug("RIMS::Protocol::MailDeliveryDecoder#initialize at #{self}") if @logger.debug? end
Public Instance Methods
append(tag, encoded_mbox_name, *opt_args, msg_text) { |response| ... }
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2207 def append(tag, encoded_mbox_name, *opt_args, msg_text) username, mbox_name = self.class.decode_delivery_target_mailbox(encoded_mbox_name) @logger.info("message delivery: user #{username}, mailbox #{mbox_name}") if (@auth.user? username) then if (engine_cached? username) then engine = engine_cache(username) deliver_to_user(tag, username, mbox_name, opt_args, msg_text, engine) {|response| yield(response) } else engine = store_engine_cache(username) { self.class.make_engine_and_recovery_if_needed(@drb_services, username, logger: @logger) {|untagged_response| yield(untagged_response) yield(:flush) } } deliver_to_user(tag, username, mbox_name, opt_args, msg_text, engine) {|response| yield(response) } end else @logger.info('message delivery: not found a user.') yield("#{tag} NO not found a user and couldn't deliver a message to the user's mailbox\r\n") end end
auth?()
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2090 def auth? @drb_services != nil end
capability(tag) { |strip| ... }
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2122 def capability(tag) standard_capability(tag) {|response| if (response.start_with? '* CAPABILITY ') then yield(response.strip + " X-RIMS-MAIL-DELIVERY-USER\r\n") else yield(response) end } end
check(tag, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2235 def check(tag, &block) make_not_allowed_command_response(tag, &block) end
cleanup()
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2098 def cleanup @logger.debug("RIMS::Protocol::MailDeliveryDecoder#cleanup at #{self}") if @logger.debug? release_engine_cache @drb_services = nil unless @drb_services.nil? @auth = nil unless @auth.nil? unless (@parent_decoder.nil?) then @parent_decoder.cleanup @parent_decoder = nil end nil end
close(tag, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2240 def close(tag, &block) make_not_allowed_command_response(tag, &block) end
copy(tag, msg_set, mbox_name, uid: false, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2265 def copy(tag, msg_set, mbox_name, uid: false, &block) make_not_allowed_command_response(tag, &block) end
create(tag, mbox_name, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2148 def create(tag, mbox_name, &block) make_not_allowed_command_response(tag, &block) end
delete(tag, mbox_name, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2153 def delete(tag, mbox_name, &block) make_not_allowed_command_response(tag, &block) end
examine(tag, mbox_name, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2143 def examine(tag, mbox_name, &block) make_not_allowed_command_response(tag, &block) end
expunge(tag, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2245 def expunge(tag, &block) make_not_allowed_command_response(tag, &block) end
fetch(tag, msg_set, data_item_group, uid: false, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2255 def fetch(tag, msg_set, data_item_group, uid: false, &block) make_not_allowed_command_response(tag, &block) end
idle(tag, client_input_gets, server_output_write, connection_timer, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2270 def idle(tag, client_input_gets, server_output_write, connection_timer, &block) make_not_allowed_command_response(tag, &block) end
list(tag, ref_name, mbox_name, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2173 def list(tag, ref_name, mbox_name, &block) make_not_allowed_command_response(tag, &block) end
logout(tag, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2113 def logout(tag, &block) @next_decoder = LogoutDecoder.new(self, @logger) make_logout_response(tag, &block) end
lsub(tag, ref_name, mbox_name, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2178 def lsub(tag, ref_name, mbox_name, &block) make_not_allowed_command_response(tag, &block) end
rename(tag, src_name, dst_name, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2158 def rename(tag, src_name, dst_name, &block) make_not_allowed_command_response(tag, &block) end
search(tag, *cond_args, uid: false, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2250 def search(tag, *cond_args, uid: false, &block) make_not_allowed_command_response(tag, &block) end
select(tag, mbox_name, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2138 def select(tag, mbox_name, &block) make_not_allowed_command_response(tag, &block) end
selected?()
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2094 def selected? false end
status(tag, mbox_name, data_item_group, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2183 def status(tag, mbox_name, data_item_group, &block) make_not_allowed_command_response(tag, &block) end
store(tag, msg_set, data_item_name, data_item_value, uid: false, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2260 def store(tag, msg_set, data_item_name, data_item_value, uid: false, &block) make_not_allowed_command_response(tag, &block) end
subscribe(tag, mbox_name, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2163 def subscribe(tag, mbox_name, &block) make_not_allowed_command_response(tag, &block) end
unsubscribe(tag, mbox_name, &block)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2168 def unsubscribe(tag, mbox_name, &block) make_not_allowed_command_response(tag, &block) end
Private Instance Methods
deliver_to_user(tag, username, mbox_name, opt_args, msg_text, engine) { |response| ... }
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2188 def deliver_to_user(tag, username, mbox_name, opt_args, msg_text, engine) user_decoder = UserMailboxDecoder.new(self, engine, @auth, @logger) begin last_response = nil user_decoder.append(tag, mbox_name, *opt_args, msg_text) {|response| last_response = response yield(response) } if (last_response.split(' ', 3)[1] == 'OK') then @logger.info("message delivery: successed to deliver #{msg_text.bytesize} octets message.") else @logger.info("message delivery: failed to deliver message.") end ensure user_decoder.cleanup(not_cleanup_parent: true) end end
engine_cache(username)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2059 def engine_cache(username) unless (engine_cached? username) then raise "not cached: #{username}" end @last_user_cache_value_engine end
engine_cached?(username)
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2054 def engine_cached?(username) @last_user_cache_key_username == username end
make_not_allowed_command_response(tag) { |"#{tag} NO not allowed command on mail delivery user\r\n"| ... }
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2133 def make_not_allowed_command_response(tag) yield("#{tag} NO not allowed command on mail delivery user\r\n") end
release_engine_cache()
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2080 def release_engine_cache if (@last_user_cache_value_engine) then engine = @last_user_cache_value_engine @last_user_cache_key_username = nil @last_user_cache_value_engine = nil engine.destroy end end
store_engine_cache(username) { || ... }
click to toggle source
# File lib/rims/protocol/decoder.rb, line 2067 def store_engine_cache(username) if (engine_cached? username) then raise "already cached: #{username}" end release_engine_cache @last_user_cache_value_engine = yield @last_user_cache_key_username = username # success to store engine cache @last_user_cache_value_engine end