Class: Mbeditor::FileTreeService

Inherits:
Object
  • Object
show all
Defined in:
app/services/mbeditor/file_tree_service.rb

Class Method Summary collapse

Class Method Details

.build(workspace_root) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/services/mbeditor/file_tree_service.rb', line 8

def self.build(workspace_root)
  root = workspace_root.to_s
  MUTEX.synchronize do
    @cache ||= {}
    entry = @cache[root]
    if entry && (Process.clock_gettime(Process::CLOCK_MONOTONIC) - entry[:ts]) < 15
      return entry[:data]
    end
  end

  matcher = ExclusionMatcher.new(Mbeditor.configuration.excluded_paths)
  data = traverse(root, root, matcher)

  MUTEX.synchronize do
    @cache ||= {}
    @cache[root] = { ts: Process.clock_gettime(Process::CLOCK_MONOTONIC), data: data }
  end

  data
end

.invalidate(workspace_root) ⇒ Object



29
30
31
32
33
34
35
# File 'app/services/mbeditor/file_tree_service.rb', line 29

def self.invalidate(workspace_root)
  MUTEX.synchronize do
    @cache ||= {}
    @cache.delete(workspace_root.to_s)
  end
  nil
end

.reset!Object



37
38
39
40
# File 'app/services/mbeditor/file_tree_service.rb', line 37

def self.reset!
  MUTEX.synchronize { @cache = {} }
  nil
end