Class: Mayu::Resources::Assets

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/mayu/resources/assets.rb

Instance Method Summary collapse

Constructor Details

#initializeAssets

Returns a new instance of Assets.



14
15
16
17
18
# File 'lib/mayu/resources/assets.rb', line 14

def initialize
  @queue = T.let(Async::Queue.new, Async::Queue)
  @results = T.let({}, T::Hash[String, Async::Variable])
  @assets = T.let({}, T::Hash[String, Asset])
end

Instance Method Details

#add(asset) ⇒ Object



26
27
28
29
# File 'lib/mayu/resources/assets.rb', line 26

def add(asset)
  @assets[asset.filename] ||= asset
  @queue.enqueue(asset)
end

#run(asset_dir, concurrency:, forever: false, task: Async::Task.current) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/mayu/resources/assets.rb', line 39

def run(
  asset_dir,
  concurrency:,
  forever: false,
  task: Async::Task.current
)
  task.async do
    semaphore = Async::Semaphore.new(concurrency)

    while forever || !@queue.empty?
      process(@queue.dequeue, asset_dir, semaphore)
    end
  end
end

#wait_for(filename) ⇒ Object



21
22
23
# File 'lib/mayu/resources/assets.rb', line 21

def wait_for(filename)
  (@results[filename] ||= Async::Variable.new).wait
end