From 63e253b506b42954861430f883ddc882a7e04f2e Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Wed, 17 Nov 2021 14:31:00 -0800 Subject: [PATCH] Update cacher to use monitor mixin --- plugins/commands/serve/util/cacher.rb | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/plugins/commands/serve/util/cacher.rb b/plugins/commands/serve/util/cacher.rb index 0f7cb34cc..09a59e4f6 100644 --- a/plugins/commands/serve/util/cacher.rb +++ b/plugins/commands/serve/util/cacher.rb @@ -1,40 +1,43 @@ +require "monitor" + module VagrantPlugins module CommandServe module Util class Cacher + include MonitorMixin class Entry + include MonitorMixin attr_reader :value - attr_reader :m def initialize(value) + super() @value = value - @m = Mutex.new end end def initialize - @m = Mutex.new + super() @registry = {} end def registered?(key) - @registry.key?(key) + synchronize { @registry.key?(key) } end def []=(key, value) entry = Entry.new(value) - @m.synchronize { @registry[key] = entry } + synchronize { @registry[key] = entry } end def [](key) - @m.synchronize { @registry[key]&.value } + synchronize { @registry[key]&.value } end def delete(key) entry = @registry[key] return if entry.nil? - entry.m.synchronize do + entry.synchronize do value = @registry[key].value @registry.delete(key) value @@ -52,7 +55,7 @@ module VagrantPlugins "No value cached with key `#{key}'" end - entry.m.synchronize do + entry.synchronize do yield entry.value end end