Class: ContentData::DynamicContentData

Inherits:
Object
  • Object
show all
Defined in:
lib/content_data/dynamic_content_data.rb

Overview

TODO(kolman): When content data is immutable, remove the clones (waste).

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDynamicContentData

Returns a new instance of DynamicContentData.



10
11
12
13
14
15
16
17
18
# File 'lib/content_data/dynamic_content_data.rb', line 10

def initialize()
  ObjectSpace.define_finalizer(self,
                               self.class.method(:finalize).to_proc)
  if Params['enable_monitoring']
    ::ContentServer::Globals.process_vars.inc('obj add DynamicContentData')
  end
  @last_content_data = nil
  @last_content_data_available_mutex = Mutex.new
end

Class Method Details

.finalize(id) ⇒ Object



20
21
22
23
24
# File 'lib/content_data/dynamic_content_data.rb', line 20

def self.finalize(id)
  if Params['enable_monitoring']
    ::ContentServer::Globals.process_vars.inc('obj rem DynamicContentData')
  end
end

Instance Method Details

#add_instance(checksum, size, server_name, path, modification_time) ⇒ Object



50
51
52
53
54
# File 'lib/content_data/dynamic_content_data.rb', line 50

def add_instance(checksum, size, server_name, path, modification_time)
  @last_content_data_available_mutex.synchronize {
    @last_content_data.add_instance(checksum, size, server_name, path, modification_time)
  }
end

#each_instance(&block) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/content_data/dynamic_content_data.rb', line 42

def each_instance(&block)
  ref = nil
  @last_content_data_available_mutex.synchronize {
    ref = @last_content_data
  }
  ref.each_instance(&block)
end

#exists?(checksum) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
36
37
38
39
40
# File 'lib/content_data/dynamic_content_data.rb', line 33

def exists?(checksum)
  ref = nil
  @last_content_data_available_mutex.synchronize {
    ref = @last_content_data
  }
  return ref.content_exists(checksum) if ref != nil
  false
end

#last_content_dataObject



70
71
72
73
74
75
76
# File 'lib/content_data/dynamic_content_data.rb', line 70

def last_content_data
  ref = nil
  @last_content_data_available_mutex.synchronize {
    ref = @last_content_data
  }
  return ref
end

#remove_instance(location, checksum = nil) ⇒ Object



56
57
58
59
60
# File 'lib/content_data/dynamic_content_data.rb', line 56

def remove_instance(location, checksum=nil)
  @last_content_data_available_mutex.synchronize {
    @last_content_data.remove_instance(location, checksum)
  }
end

#stats_by_location(location) ⇒ Object



62
63
64
65
66
67
68
# File 'lib/content_data/dynamic_content_data.rb', line 62

def stats_by_location(location)
  ref = nil
  @last_content_data_available_mutex.synchronize {
    ref = @last_content_data
  }
  return ref.stats_by_location(location)
end

#update(content_data) ⇒ Object



26
27
28
29
30
31
# File 'lib/content_data/dynamic_content_data.rb', line 26

def update(content_data)
  @last_content_data_available_mutex.synchronize {
    @last_content_data = content_data
    Log.debug2("updating last content data:#{@last_content_data}\n")
  }
end