Class: TQ::Queue

Inherits:
Object
  • Object
show all
Defined in:
lib/tq.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, spec) ⇒ Queue

Returns a new instance of Queue.



120
121
122
123
# File 'lib/tq.rb', line 120

def initialize(client, spec)
  @client = client
  @queue = spec
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



119
120
121
# File 'lib/tq.rb', line 119

def client
  @client
end

#queueObject (readonly)

Returns the value of attribute queue.



119
120
121
# File 'lib/tq.rb', line 119

def queue
  @queue
end

Instance Method Details

#extend!(task, dur) ⇒ Object

Note: does not actually extend the time, but sets the total duration to the given amount (minus any already elapsed time).



145
146
147
148
149
150
151
152
153
154
# File 'lib/tq.rb', line 145

def extend!(task, dur)
  msg = { :lease_duration => dur,
          :schedule_time => task.schedule_time,
          :response_view => 'FULL'
        }
  results = client.renew_task_lease( task.name,
      CloudTasks::RenewLeaseRequest.new( **msg )
  )
  return new_task(results)
end

#finish!(task) ⇒ Object



168
169
170
171
172
173
# File 'lib/tq.rb', line 168

def finish!(task)
  results = client.acknowledge_task( task.name,
      CloudTasks::AcknowledgeTaskRequest.new( :schedule_time => task.schedule_time )
  )
  return
end

#lease!Object



129
130
131
132
133
134
135
136
137
138
139
# File 'lib/tq.rb', line 129

def lease!
  msg = { :lease_duration => queue.lease_duration, 
          :max_tasks => queue.max_tasks,
          :response_view => 'FULL'
        }
  results = client.lease_tasks( queue_name,
      CloudTasks::LeaseTasksRequest.new( **msg )
  )
  items = results.tasks || []
  items.map {|t| new_task(t)}
end

#push!(payload, tag = nil) ⇒ Object



156
157
158
159
160
161
162
163
164
165
166
# File 'lib/tq.rb', line 156

def push!(payload, tag=nil)
  msg = { :payload => encode(payload), :tag => tag }.reject {|k,v| v.nil?}
  results = client.create_task( queue_name, 
      CloudTasks::CreateTaskRequest.new( 
          :task => CloudTasks::Task.new(
              :pull_message => CloudTasks::PullMessage.new( **msg )
          )
      )
  )
  new_task(results)
end

#queue_nameObject



125
126
127
# File 'lib/tq.rb', line 125

def queue_name
  queue.queue_name
end