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