Class: Mayu::Resources::Assets
- Inherits:
-
Object
- Object
- Mayu::Resources::Assets
- Extended by:
- T::Sig
- Defined in:
- lib/mayu/resources/assets.rb
Instance Method Summary collapse
- #add(asset) ⇒ Object
-
#initialize ⇒ Assets
constructor
A new instance of Assets.
- #run(asset_dir, concurrency:, forever: false, task: Async::Task.current) ⇒ Object
- #wait_for(filename) ⇒ Object
Constructor Details
#initialize ⇒ Assets
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 |