Class: Cloudflare::QueueBatch

Inherits:
Object
  • Object
show all
Defined in:
lib/cloudflare_workers/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.



258
259
260
# File 'lib/cloudflare_workers/queue.rb', line 258

def initialize(js)
  @js = js
end

Instance Attribute Details

#jsObject (readonly)

Returns the value of attribute js.



256
257
258
# File 'lib/cloudflare_workers/queue.rb', line 256

def js
  @js
end

Instance Method Details

#ack_allObject



285
286
287
288
289
# File 'lib/cloudflare_workers/queue.rb', line 285

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

#messagesObject



267
268
269
270
271
272
273
274
275
276
277
278
279
# File 'lib/cloudflare_workers/queue.rb', line 267

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



262
263
264
265
# File 'lib/cloudflare_workers/queue.rb', line 262

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

#retry_all(delay_seconds: nil) ⇒ Object



291
292
293
294
295
296
297
298
299
300
# File 'lib/cloudflare_workers/queue.rb', line 291

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



281
282
283
# File 'lib/cloudflare_workers/queue.rb', line 281

def size
  messages.length
end