lib/beanstalk-client/connection.rb in beanstalk-client-1.0.0 vs lib/beanstalk-client/connection.rb in beanstalk-client-1.0.2
- old
+ new
@@ -24,14 +24,13 @@
module Beanstalk
class Connection
attr_reader :addr
- def initialize(addr, jptr=self, default_tube=nil)
+ def initialize(addr, default_tube=nil)
@waiting = false
@addr = addr
- @jptr = jptr
connect
@last_used = 'default'
@watch_list = [@last_used]
self.use(default_tube) if default_tube
self.watch(default_tube) if default_tube
@@ -73,13 +72,17 @@
def peek_buried()
interact("peek-buried\r\n", :job)
end
- def reserve()
+ def reserve(timeout=nil)
raise WaitingForJobError if @waiting
- @socket.write("reserve\r\n")
+ if timeout.nil?
+ @socket.write("reserve\r\n")
+ else
+ @socket.write("reserve-with-timeout #{timeout}\r\n")
+ end
begin
@waiting = true
# Give the user a chance to select on multiple fds.
Beanstalk.select.call([@socket]) if Beanstalk.select
@@ -87,11 +90,11 @@
# just continue
ensure
@waiting = false
end
- Job.new(@jptr, *read_job('RESERVED'))
+ Job.new(self, *read_job('RESERVED'))
end
def delete(id)
interact("delete #{id}\r\n", %w(DELETED))
:ok
@@ -179,11 +182,11 @@
end
vals
end
def found_job()
- Job.new(@jptr, *read_job('FOUND'))
+ Job.new(self, *read_job('FOUND'))
rescue NotFoundError
nil
end
def read_job(word)
@@ -222,12 +225,11 @@
def connect()
@connections ||= {}
@addrs.each do |addr|
begin
if !@connections.include?(addr)
- puts "connecting to beanstalk at #{addr}"
- @connections[addr] = Connection.new(addr, self, @default_tube)
+ @connections[addr] = Connection.new(addr, @default_tube)
prev_watched = @connections[addr].list_tubes_watched()
to_ignore = prev_watched - @watch_list
@watch_list.each{|tube| @connections[addr].watch(tube)}
to_ignore.each{|tube| @connections[addr].ignore(tube)}
end
@@ -253,11 +255,11 @@
def yput(obj, pri=65536, delay=0, ttr=120)
send_to_rand_conn(:yput, obj, pri, delay, ttr)
end
- def reserve()
- send_to_rand_conn(:reserve)
+ def reserve(timeout=nil)
+ send_to_rand_conn(:reserve, timeout)
end
def use(tube)
send_to_all_conns(:use, tube)
end