Class: Upkeep::Subscriptions::ActiveRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/upkeep/subscriptions/active_registry.rb

Instance Method Summary collapse

Constructor Details

#initializeActiveRegistry

Returns a new instance of ActiveRegistry.



9
10
11
12
13
# File 'lib/upkeep/subscriptions/active_registry.rb', line 9

def initialize
  @mutex = Mutex.new
  @subscriptions = {}
  @reverse_index = ReverseIndex.new
end

Instance Method Details

#countObject



75
76
77
# File 'lib/upkeep/subscriptions/active_registry.rb', line 75

def count
  @mutex.synchronize { @subscriptions.size }
end

#covers?(persistent_count) ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/upkeep/subscriptions/active_registry.rb', line 71

def covers?(persistent_count)
  count >= persistent_count
end

#entries_for(changes) ⇒ Object



60
61
62
# File 'lib/upkeep/subscriptions/active_registry.rb', line 60

def entries_for(changes)
  @mutex.synchronize { @reverse_index.entries_for(changes) }
end

#fetch(id) ⇒ Object



26
27
28
# File 'lib/upkeep/subscriptions/active_registry.rb', line 26

def fetch(id)
  @mutex.synchronize { @subscriptions[id] }
end

#register(subscription, entries: nil) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/upkeep/subscriptions/active_registry.rb', line 15

def register(subscription, entries: nil)
  @mutex.synchronize do
    @subscriptions[subscription.id] = subscription
    if entries
      @reverse_index.index_entries(entries, subscription: subscription)
    else
      @reverse_index.index(subscription)
    end
  end
end

#resetObject



64
65
66
67
68
69
# File 'lib/upkeep/subscriptions/active_registry.rb', line 64

def reset
  @mutex.synchronize do
    @subscriptions = {}
    @reverse_index = ReverseIndex.new
  end
end

#subscriptionsObject



30
31
32
# File 'lib/upkeep/subscriptions/active_registry.rb', line 30

def subscriptions
  @mutex.synchronize { @subscriptions.values }
end

#summaryObject



79
80
81
82
83
# File 'lib/upkeep/subscriptions/active_registry.rb', line 79

def summary
  @mutex.synchronize do
    @reverse_index.summary.merge(subscriptions: @subscriptions.size)
  end
end

#touch(id, metadata:) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/upkeep/subscriptions/active_registry.rb', line 45

def touch(id, metadata:)
  @mutex.synchronize do
    subscription = @subscriptions[id]
    return unless subscription

    @subscriptions[id] = Subscription.new(
      subscription.id,
      subscription.subscriber_id,
      subscription.recorder,
      subscription.graph,
      subscription..merge()
    )
  end
end

#unregister(ids) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/upkeep/subscriptions/active_registry.rb', line 34

def unregister(ids)
  ids = Array(ids)
  @mutex.synchronize do
    ids.each do |id|
      next unless @subscriptions.delete(id)

      @reverse_index.delete_subscription(id)
    end
  end
end