Class: LaunchDarkly::MemoizedValue

Inherits:
Object
  • Object
show all
Defined in:
lib/ldclient-rb/memoized_value.rb

Overview

Simple implementation of a thread-safe memoized value whose generator function will never be run more than once, and whose value can be overridden by explicit assignment.

Instance Method Summary collapse

Constructor Details

#initialize(&generator) ⇒ MemoizedValue

Returns a new instance of MemoizedValue.



6
7
8
9
10
11
# File 'lib/ldclient-rb/memoized_value.rb', line 6

def initialize(&generator)
  @generator = generator
  @mutex = Mutex.new
  @inited = false
  @value = nil
end

Instance Method Details

#get ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/ldclient-rb/memoized_value.rb', line 13

def get
  @mutex.synchronize do
    if !@inited
      @value = @generator.call
      @inited = true
    end
  end
  @value
end

#set(value) ⇒ Object



23
24
25
26
27
28
# File 'lib/ldclient-rb/memoized_value.rb', line 23

def set(value)
  @mutex.synchronize do
    @value = value
    @inited = true
  end
end