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.



297
298
299
# File 'lib/homura/runtime/queue.rb', line 297

def initialize(js)
  @js = js
end

Instance Attribute Details

#jsObject (readonly)

Returns the value of attribute js.



295
296
297
# File 'lib/homura/runtime/queue.rb', line 295

def js
  @js
end

Instance Method Details

#ack_allObject



325
326
327
328
329
# File 'lib/homura/runtime/queue.rb', line 325

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

#messagesObject



306
307
308
309
310
311
312
313
314
315
316
317
318
319
# File 'lib/homura/runtime/queue.rb', line 306

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



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

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

#retry_all(delay_seconds: nil) ⇒ Object



331
332
333
334
335
336
337
338
339
340
341
# File 'lib/homura/runtime/queue.rb', line 331

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



321
322
323
# File 'lib/homura/runtime/queue.rb', line 321

def size
  messages.length
end