Class: Tango::Resource::Buffer
- Inherits:
-
Object
- Object
- Tango::Resource::Buffer
- Defined in:
- lib/tango/resource/buffer.rb
Overview
Resource buffer
Instance Method Summary (collapse)
-
- (Object) fill(type, resource)
Fill buffer with a resource.
-
- (Tango::Resource::Buffer) initialize(size = 500)
constructor
Constructor of the Buffer.
-
- (Object) register(type, &release_callback)
Register new type of resource to be buffered.
-
- (Object) release_all
Release all registered buffers.
Constructor Details
- (Tango::Resource::Buffer) initialize(size = 500)
Constructor of the Buffer
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/tango/resource/buffer.rb', line 13 def initialize( size = 500 ) # Set max size of the buffer @size = size # Buffer storage for resources @resources = {} # Container of callbacks for each registered resource type @callbacks = {} end |
Instance Method Details
- (Object) fill(type, resource)
Fill buffer with a resource
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/tango/resource/buffer.rb', line 42 def fill( type, resource ) raise ArgumentError, "Trying to fill object with unregistered type" unless @resources.keys.include?( type ) # Append resource to the buffer @resources[type] << resource # Release the buffer if buffer size exceeded release( type ) if @resources[type].count >= @size end |
- (Object) register(type, &release_callback)
Register new type of resource to be buffered
29 30 31 32 33 34 35 36 |
# File 'lib/tango/resource/buffer.rb', line 29 def register( type, &release_callback ) raise ArgumentError, "No release callback given" unless block_given? @resources[type] = [] @callbacks[type] = release_callback end |
- (Object) release_all
Release all registered buffers
54 55 56 |
# File 'lib/tango/resource/buffer.rb', line 54 def release_all @resources.keys.each { |type| release( type ) } end |