class PseudoCleaner::RedisMonitorCleaner::RedisMessage
Attributes
command[R]
cur_pos[R]
db[R]
host[R]
message[R]
port[R]
time_stamp[R]
Public Class Methods
new(message_string)
click to toggle source
# File lib/pseudo_cleaner/redis_monitor_cleaner.rb, line 176 def initialize(message_string) @message = message_string parse_message end
Public Instance Methods
keys()
click to toggle source
# File lib/pseudo_cleaner/redis_monitor_cleaner.rb, line 236 def keys unless defined?(@message_keys) @message_keys = [] if Redis::Namespace::COMMANDS.include? command handling = Redis::Namespace::COMMANDS[command.to_s.downcase] (before, after) = handling case before when :first @message_keys << next_value when :all while @cur_pos < @message.length @message_keys << next_value end when :exclude_first next_value while @cur_pos < @message.length @message_keys << next_value end when :exclude_last while @cur_pos < @message.length @message_keys << next_value end @message_keys.delete_at(@message_keys.length - 1) when :exclude_options options = ["weights", "aggregate", "sum", "min", "max"] while @cur_pos < @message.length @message_keys << next_value if options.include?(@message_keys[-1].downcase) @message_keys.delete_at(@message_keys.length - 1) break end end when :alternate while @cur_pos < @message.length @message_keys << next_value next_value end when :sort next_value while @cur_pos < @message.length a_value = next_value if a_value.downcase == "store" @message_keys[0] = next_value end end # when :eval_style # # when :scan_style end end end @message_keys end
next_value()
click to toggle source
# File lib/pseudo_cleaner/redis_monitor_cleaner.rb, line 206 def next_value in_quote = (@message[@cur_pos] == '"') if in_quote @cur_pos += 1 end_pos = @cur_pos while (end_pos && end_pos < @message.length) end_pos = @message.index("\"", end_pos) num_backslashes = 0 back_pos = end_pos while @message[back_pos - 1] == "\\" num_backslashes += 1 back_pos -= 1 end break if (num_backslashes % 2) == 0 end_pos += 1 end else end_pos = @message.index(" ", @cur_pos) end the_value = @message[@cur_pos..end_pos - 1] end_pos += 1 if in_quote @cur_pos = end_pos + 1 the_value.gsub("\\\\", "\\").gsub("\\\"", "\"") end
parse_message()
click to toggle source
# File lib/pseudo_cleaner/redis_monitor_cleaner.rb, line 182 def parse_message if @message =~ /[0-9]+\.[0-9]+ \[[0-9]+ [^:]+:[^\]]+\] \"[^\"]+\"/ end_pos = @message.index(" ") @time_stamp = @message[0..end_pos - 1] @cur_pos = end_pos + 2 # " [" end_pos = @message.index(" ", @cur_pos) @db = @message[@cur_pos..end_pos - 1].to_i @cur_pos = end_pos + 1 end_pos = @message.index(":", @cur_pos) @host = @message[@cur_pos..end_pos - 1] @cur_pos = end_pos + 1 end_pos = @message.index("]", @cur_pos) @port = @message[@cur_pos..end_pos - 1].to_i @cur_pos = end_pos + 2 # "] " @command = next_value.downcase else @command = @message end end
to_s()
click to toggle source
# File lib/pseudo_cleaner/redis_monitor_cleaner.rb, line 302 def to_s { time_stamp: time_stamp, db: db, host: host, port: port, command: command, message: message, cur_pos: cur_pos }.to_s end