lib/ost.rb in ost-0.1.6 vs lib/ost.rb in ost-1.0.0.rc1
- old
+ new
@@ -1,57 +1,60 @@
-require "nest"
+require "nido"
+require "redic"
module Ost
- TIMEOUT = (ENV["OST_TIMEOUT"] || 2).to_i
+ TIMEOUT = ENV["OST_TIMEOUT"] || "2"
class Queue
attr :key
attr :backup
def initialize(name)
- @key = Nest.new(:ost, redis)[name]
+ @key = Nido.new(:ost)[name]
@backup = @key[Socket.gethostname][Process.pid]
+ @stopping = false
end
def push(value)
- key.lpush(value)
+ redis.call("LPUSH", @key, value)
end
def each(&block)
- @stopping = false
-
loop do
- break if @stopping
+ item = redis.call("BRPOPLPUSH", @key, @backup, TIMEOUT)
- item = @key.brpoplpush(@backup, TIMEOUT)
+ if item
+ block.call(item)
+ redis.call("LPOP", @backup)
+ end
- next unless item
-
- block.call(item)
-
- @backup.lpop
+ break if @stopping
end
end
def stop
@stopping = true
end
def items
- key.lrange(0, -1)
+ redis.call("LRANGE", @key, 0, -1)
end
alias << push
alias pop each
def size
- key.llen
+ redis.call("LLEN", @key)
end
def redis
- @redis ||= Redis.connect(Ost.options)
+ defined?(@redis) ? @redis : Ost.redis
end
+
+ def redis=(redis)
+ @redis = redis
+ end
end
@queues = Hash.new do |hash, key|
hash[key] = Queue.new(key)
end
@@ -62,15 +65,13 @@
def self.stop
@queues.each { |_, queue| queue.stop }
end
- @options = nil
-
- def self.connect(options = {})
- @options = options
+ def self.redis
+ @redis ||= Redic.new
end
- def self.options
- @options || {}
+ def self.redis=(redis)
+ @redis = redis
end
end