lib/city_watch/util/flags.rb in city-watch-0.5.4 vs lib/city_watch/util/flags.rb in city-watch-0.5.5

- old
+ new

@@ -1,63 +1,56 @@ module Flags - module ClassMethods - - def set_flag(name) - unless get_flag(name) - flag_flapped name, :on - CityWatch.redis.setbit "#{CityWatch.config[:prefix]}::#{host}::#{self.name}::flags", flag_position(name), 1 - end + + def set_flag(name) + unless get_flag(name) + flag_flapped name, :on + CityWatch.redis.setbit "#{CityWatch.config[:prefix]}::#{host}::#{self.name}::flags", flag_position(name), 1 end - - def clear_flag(name) - if get_flag(name) - flag_flapped name, :off - CityWatch.redis.setbit "#{CityWatch.config[:prefix]}::#{host}::#{self.name}::flags", flag_position(name), 0 - end + end + + def clear_flag(name) + if get_flag(name) + flag_flapped name, :off + CityWatch.redis.setbit "#{CityWatch.config[:prefix]}::#{host}::#{self.name}::flags", flag_position(name), 0 end - - def flag_flapped(name,new_val) - puts "Flag flipped: #{name} -> #{new_val}" if CityWatch.debug? + end + + def flag_flapped(name,new_val) + puts "Flag flipped: #{name} -> #{new_val}" if CityWatch.debug? + end + + def get_flag(name,host=host) + @host = host + CityWatch.redis.getbit("#{CityWatch.config[:prefix]}::#{host}::#{self.name}::flags", flag_position(name)) == 1 ? true : false + end + + def get_flags(host=host) + @host = host + out = [] + map = flag_map + map.each_index do |idx| + out << map[idx] if get_flag(map[idx]) end - - def get_flag(name,host=host) - @host = host - CityWatch.redis.getbit("#{CityWatch.config[:prefix]}::#{host}::#{self.name}::flags", flag_position(name)) == 1 ? true : false + out + end + + def flag_map_key + "#{CityWatch.config[:prefix]}::#{self.name}::flag_map" + end + + def flag_map + CityWatch.redis.lrange flag_map_key, 0, -1 + end + + def flag_position(name) + if (map = flag_map) && map.include?(name.to_s) + map.index(name.to_s) + else + new_flag(name) end - - def get_flags(host=host) - @host = host - out = [] - map = flag_map - map.each_index do |idx| - out << map[idx] if get_flag(map[idx]) - end - out - end - - def flag_map_key - "#{CityWatch.config[:prefix]}::#{self.name}::flag_map" - end - - def flag_map - CityWatch.redis.lrange flag_map_key, 0, -1 - end - - def flag_position(name) - if (map = flag_map) && map.include?(name.to_s) - map.index(name.to_s) - else - new_flag(name) - end - end - - def new_flag(name) - CityWatch.redis.rpush(flag_map_key, name) - 1 - end - end - def self.included(base) - base.extend(ClassMethods) + def new_flag(name) + CityWatch.redis.rpush(flag_map_key, name) - 1 end end \ No newline at end of file