Class: GraphAgent::Channels::EphemeralValue
- Inherits:
-
BaseChannel
- Object
- BaseChannel
- GraphAgent::Channels::EphemeralValue
- Defined in:
- lib/graph_agent/channels/ephemeral_value.rb
Constant Summary
Constants inherited from BaseChannel
Instance Attribute Summary
Attributes inherited from BaseChannel
Instance Method Summary collapse
- #available? ⇒ Boolean
- #checkpoint ⇒ Object
- #copy ⇒ Object
- #from_checkpoint(checkpoint) ⇒ Object
- #get ⇒ Object
-
#initialize(key: "", guard: true) ⇒ EphemeralValue
constructor
A new instance of EphemeralValue.
- #update(values) ⇒ Object
Methods inherited from BaseChannel
Constructor Details
#initialize(key: "", guard: true) ⇒ EphemeralValue
Returns a new instance of EphemeralValue.
6 7 8 9 10 |
# File 'lib/graph_agent/channels/ephemeral_value.rb', line 6 def initialize(key: "", guard: true) super(key: key) @guard = guard @value = MISSING end |
Instance Method Details
#available? ⇒ Boolean
38 39 40 |
# File 'lib/graph_agent/channels/ephemeral_value.rb', line 38 def available? !@value.equal?(MISSING) end |
#checkpoint ⇒ Object
42 43 44 |
# File 'lib/graph_agent/channels/ephemeral_value.rb', line 42 def checkpoint @value end |
#copy ⇒ Object
52 53 54 55 56 |
# File 'lib/graph_agent/channels/ephemeral_value.rb', line 52 def copy ch = self.class.new(key: key, guard: @guard) ch.instance_variable_set(:@value, @value) ch end |
#from_checkpoint(checkpoint) ⇒ Object
46 47 48 49 50 |
# File 'lib/graph_agent/channels/ephemeral_value.rb', line 46 def from_checkpoint(checkpoint) ch = self.class.new(key: key, guard: @guard) ch.instance_variable_set(:@value, checkpoint.equal?(MISSING) ? MISSING : checkpoint) ch end |
#get ⇒ Object
12 13 14 15 16 |
# File 'lib/graph_agent/channels/ephemeral_value.rb', line 12 def get raise EmptyChannelError.new("Channel '#{key}' is empty") if @value.equal?(MISSING) @value end |
#update(values) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/graph_agent/channels/ephemeral_value.rb', line 18 def update(values) if values.empty? if @value.equal?(MISSING) return false else @value = MISSING return true end end if values.length != 1 && @guard raise InvalidUpdateError.new( "At key '#{key}': EphemeralValue(guard=true) can receive only one value per step." ) end @value = values.last true end |