Class: ESM::Bot::DeliveryOverseer

Inherits:
Object
  • Object
show all
Defined in:
lib/esm/bot/delivery_overseer.rb

Defined Under Namespace

Classes: Delivery, Envelope, PendingDelivery

Instance Method Summary collapse

Constructor Details

#initializeDeliveryOverseer

Returns a new instance of DeliveryOverseer.



53
54
55
56
57
58
59
60
61
62
# File 'lib/esm/bot/delivery_overseer.rb', line 53

def initialize
  @queue = Queue.new
  @deliveries = {}
  @deliveries_mutex = Mutex.new
  @check_every = ESM.config.bot_delivery_overseer.check_every.freeze

  @deliveries_thread = oversee_deliveries!
  @sender_thread_one = oversee!
  @sender_thread_two = oversee!
end

Instance Method Details

#add(message, delivery_channel, embed_message: "", replying_to: nil, wait: false) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/esm/bot/delivery_overseer.rb', line 64

def add(message, delivery_channel, embed_message: "", replying_to: nil, wait: false)
  envelope = Envelope.new(
    message: message,
    delivery_channel: delivery_channel,
    embed_message: embed_message,
    replying_to: replying_to,
    wait: wait
  )

  @queue << envelope
  return PendingDelivery.new(envelope.id) if wait

  nil
end

#get(id) ⇒ Object



79
80
81
82
83
84
# File 'lib/esm/bot/delivery_overseer.rb', line 79

def get(id)
  @deliveries_mutex.synchronize do
    delivery = @deliveries.delete(id)
    delivery&.message
  end
end