Module: Undertow::Buffer

Defined in:
lib/undertow/buffer.rb

Overview

Low-level set operations used by Trackable callbacks and DrainJob. Delegates to the configured store adapter. All methods are no-ops when tracking is disabled.

Class Method Summary collapse

Class Method Details

.acquire_drain_lock(ttl: 30) ⇒ Object



60
61
62
63
64
65
# File 'lib/undertow/buffer.rb', line 60

def acquire_drain_lock(ttl: 30)
  lock_key = Undertow.configuration.drain_lock_key
  return true unless lock_key

  store.lock_acquire(lock_key, ttl: ttl)
end

.deregister_model(model_name) ⇒ Object



35
36
37
# File 'lib/undertow/buffer.rb', line 35

def deregister_model(model_name)
  store.remove_member(Registry::MODELS_KEY, model_name)
end

.pending?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/undertow/buffer.rb', line 56

def pending?
  store.member_count(Registry::MODELS_KEY).positive?
end

.pending_model_namesObject



31
32
33
# File 'lib/undertow/buffer.rb', line 31

def pending_model_names
  store.members(Registry::MODELS_KEY)
end

.pop_deleted(model_name, count) ⇒ Object



27
28
29
# File 'lib/undertow/buffer.rb', line 27

def pop_deleted(model_name, count)
  store.pop_members(Registry.deleted_key(model_name), count)
end

.pop_pending(model_name, count) ⇒ Object



23
24
25
# File 'lib/undertow/buffer.rb', line 23

def pop_pending(model_name, count)
  store.pop_members(Registry.pending_key(model_name), count)
end

.push_deleted(model_name, ids) ⇒ Object



16
17
18
19
20
21
# File 'lib/undertow/buffer.rb', line 16

def push_deleted(model_name, ids)
  return if Undertow.tracking_disabled?

  store.add_members(Registry.deleted_key(model_name), ids)
  store.add_members(Registry::MODELS_KEY, model_name)
end

.push_pending(model_name, ids) ⇒ Object



9
10
11
12
13
14
# File 'lib/undertow/buffer.rb', line 9

def push_pending(model_name, ids)
  return if Undertow.tracking_disabled?

  store.add_members(Registry.pending_key(model_name), ids)
  store.add_members(Registry::MODELS_KEY, model_name)
end

.release_drain_lockObject



67
68
69
70
71
72
# File 'lib/undertow/buffer.rb', line 67

def release_drain_lock
  lock_key = Undertow.configuration.drain_lock_key
  return unless lock_key

  store.lock_release(lock_key)
end

.remaining(model_name) ⇒ Object



43
44
45
46
# File 'lib/undertow/buffer.rb', line 43

def remaining(model_name)
  store.member_count(Registry.pending_key(model_name)) +
    store.member_count(Registry.deleted_key(model_name))
end

.reregister_model(model_name) ⇒ Object



39
40
41
# File 'lib/undertow/buffer.rb', line 39

def reregister_model(model_name)
  store.add_members(Registry::MODELS_KEY, model_name)
end

.restore_deleted(model_name, ids) ⇒ Object



52
53
54
# File 'lib/undertow/buffer.rb', line 52

def restore_deleted(model_name, ids)
  store.add_members(Registry.deleted_key(model_name), ids) if ids.any?
end

.restore_pending(model_name, ids) ⇒ Object



48
49
50
# File 'lib/undertow/buffer.rb', line 48

def restore_pending(model_name, ids)
  store.add_members(Registry.pending_key(model_name), ids) if ids.any?
end