Class: Smplkit::Management::FlagRegistrationBuffer

Inherits:
Object
  • Object
show all
Defined in:
lib/smplkit/management/buffer.rb

Overview

Thread-safe batch buffer for flag declarations.

Instance Method Summary collapse

Constructor Details

#initializeFlagRegistrationBuffer

Returns a new instance of FlagRegistrationBuffer.



46
47
48
49
50
# File 'lib/smplkit/management/buffer.rb', line 46

def initialize
  @seen = {}
  @pending = []
  @lock = Mutex.new
end

Instance Method Details

#add(declaration) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/smplkit/management/buffer.rb', line 52

def add(declaration)
  @lock.synchronize do
    next if @seen.key?(declaration.id)

    @seen[declaration.id] = true
    item = { "id" => declaration.id, "type" => declaration.type, "default" => declaration.default }
    item["service"] = declaration.service if declaration.service
    item["environment"] = declaration.environment if declaration.environment
    @pending << item
  end
end

#drainObject



64
65
66
67
68
69
70
# File 'lib/smplkit/management/buffer.rb', line 64

def drain
  @lock.synchronize do
    batch = @pending
    @pending = []
    batch
  end
end

#pending_countObject



72
73
74
# File 'lib/smplkit/management/buffer.rb', line 72

def pending_count
  @lock.synchronize { @pending.length }
end