Class: Cloudflare::QueueBatch

Inherits:
Object
  • Object
show all
Defined in:
lib/homura/runtime/queue.rb

Overview

Wraps the MessageBatch passed to ‘queue(batch, env, ctx)` in worker.mjs. Exposes `queue` name, an Array of QueueMessage, and batch-level ack/retry helpers.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(js) ⇒ QueueBatch

Returns a new instance of QueueBatch.



279
280
281
# File 'lib/homura/runtime/queue.rb', line 279

def initialize(js)
  @js = js
end

Instance Attribute Details

#jsObject (readonly)

Returns the value of attribute js.



277
278
279
# File 'lib/homura/runtime/queue.rb', line 277

def js
  @js
end

Instance Method Details

#ack_allObject



306
307
308
309
310
# File 'lib/homura/runtime/queue.rb', line 306

def ack_all
  js = @js
  `(#{js} && typeof #{js}.ackAll === 'function' ? #{js}.ackAll() : null)`
  nil
end

#messagesObject



288
289
290
291
292
293
294
295
296
297
298
299
300
# File 'lib/homura/runtime/queue.rb', line 288

def messages
  return @messages if @messages
  js = @js
  arr = `(#{js} && Array.isArray(#{js}.messages) ? #{js}.messages : [])`
  out = []
  len = `#{arr}.length`
  i = 0
  while i < len
    out << QueueMessage.new(`#{arr}[#{i}]`)
    i += 1
  end
  @messages = out
end

#queueObject



283
284
285
286
# File 'lib/homura/runtime/queue.rb', line 283

def queue
  js = @js
  `(#{js} && #{js}.queue ? String(#{js}.queue) : '')`
end

#retry_all(delay_seconds: nil) ⇒ Object



312
313
314
315
316
317
318
319
320
321
# File 'lib/homura/runtime/queue.rb', line 312

def retry_all(delay_seconds: nil)
  js = @js
  if delay_seconds
    ds = delay_seconds.to_i
    `(#{js} && typeof #{js}.retryAll === 'function' ? #{js}.retryAll({ delaySeconds: #{ds} }) : null)`
  else
    `(#{js} && typeof #{js}.retryAll === 'function' ? #{js}.retryAll() : null)`
  end
  nil
end

#sizeObject



302
303
304
# File 'lib/homura/runtime/queue.rb', line 302

def size
  messages.length
end