Class: Fiona7::WidgetGc::GarbageCollector

Inherits:
Object
  • Object
show all
Defined in:
lib/fiona7/widget_gc/garbage_collector.rb

Instance Method Summary collapse

Constructor Details

#initialize(object_id, mode) ⇒ GarbageCollector

Returns a new instance of GarbageCollector.



10
11
12
13
14
# File 'lib/fiona7/widget_gc/garbage_collector.rb', line 10

def initialize(object_id, mode)
  self.object_id = object_id
  self.mode = mode
  self.klass = Fiona7::WriteObj
end

Instance Method Details

#gc!Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/fiona7/widget_gc/garbage_collector.rb', line 16

def gc!
  if (sweep_strategy = SweepStrategies::Factory.for(self.mode, Fiona7.widget_gc_strategy))
    object          = Prefetch::ObjPrefetch.new(self.klass, [self.object_id]).find_one(self.object_id)
    widget_resolver = Prefetch::WidgetResolverPrefetch.new(self.klass, [object]).widget_resolver(object)
    marker          = Marker.new(object, widget_resolver)

    if marker.garbage?
      sweep_strategy.new(object, widget_resolver).sweep!(marker.garbage)
    end
  end
end