Class: Julewire::Core::Destinations::Collection

Inherits:
Object
  • Object
show all
Defined in:
lib/julewire/core/destinations/collection.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(destinations, on_drop:, on_failure:) ⇒ Collection

Returns a new instance of Collection.



8
9
10
11
12
# File 'lib/julewire/core/destinations/collection.rb', line 8

def initialize(destinations, on_drop:, on_failure:)
  @destinations = destinations.freeze
  @on_drop = on_drop
  @on_failure = on_failure
end

Class Method Details

.build(configuration:, defaults:, on_drop:, on_failure:) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/julewire/core/destinations/collection.rb', line 15

def build(configuration:, defaults:, on_drop:, on_failure:)
  new(
    validate_destinations(configuration.destinations.build(defaults: defaults)),
    on_drop: on_drop,
    on_failure: on_failure
  )
end

Instance Method Details

#after_fork!Object



40
41
42
43
44
45
# File 'lib/julewire/core/destinations/collection.rb', line 40

def after_fork!
  @destinations.each do |destination|
    call_destination_after_fork(destination)
  end
  self
end

#close(timeout: nil, skip_resource_identities: nil) ⇒ Object



51
52
53
# File 'lib/julewire/core/destinations/collection.rb', line 51

def close(timeout: nil, skip_resource_identities: nil)
  call_lifecycle(:close, timeout: timeout, skip_resource_identities: skip_resource_identities)
end

#emit(record) ⇒ Object



34
35
36
37
38
# File 'lib/julewire/core/destinations/collection.rb', line 34

def emit(record)
  @destinations.each do |destination|
    emit_to_destination(destination, record)
  end
end

#empty?Boolean

Returns:

  • (Boolean)


32
# File 'lib/julewire/core/destinations/collection.rb', line 32

def empty? = @destinations.empty?

#flush(timeout: nil) ⇒ Object



47
48
49
# File 'lib/julewire/core/destinations/collection.rb', line 47

def flush(timeout: nil)
  call_lifecycle(:flush, timeout: timeout)
end

#healthObject



61
62
63
# File 'lib/julewire/core/destinations/collection.rb', line 61

def health
  @destinations.to_h { [destination_name(it), destination_health(it)] }
end

#lifecycle_resource_identitiesObject



55
56
57
58
59
# File 'lib/julewire/core/destinations/collection.rb', line 55

def lifecycle_resource_identities
  @destinations.each_with_object({}.compare_by_identity) do |destination, identities|
    identities[resource_identity(destination)] = true
  end
end