Class: Makara::Strategies::ShardAware

Inherits:
Abstract
  • Object
show all
Defined in:
lib/makara/strategies/shard_aware.rb

Instance Attribute Summary

Attributes inherited from Abstract

#pool

Instance Method Summary collapse

Methods inherited from Abstract

#initialize

Constructor Details

This class inherits a constructor from Makara::Strategies::Abstract

Instance Method Details

#connection_added(wrapper) ⇒ Object



12
13
14
15
# File 'lib/makara/strategies/shard_aware.rb', line 12

def connection_added(wrapper)
  id = wrapper._makara_shard_id
  shard_strategy(id).connection_added(wrapper)
end

#currentObject



27
28
29
30
31
32
# File 'lib/makara/strategies/shard_aware.rb', line 27

def current
  id = shard_id
  raise Makara::Errors::InvalidShard.new(pool.role, id) unless id && @shards[id]

  @shards[id].current
end

#initObject



7
8
9
10
# File 'lib/makara/strategies/shard_aware.rb', line 7

def init
  @shards = {}
  @default_shard = pool.default_shard
end

#nextObject



34
35
36
37
38
39
# File 'lib/makara/strategies/shard_aware.rb', line 34

def next
  id = shard_id
  raise Makara::Errors::InvalidShard.new(pool.role, id) unless id && @shards[id]

  @shards[id].next
end

#shard_idObject



41
42
43
# File 'lib/makara/strategies/shard_aware.rb', line 41

def shard_id
  Thread.current['makara_shard_id'] || pool.default_shard
end

#shard_strategy(shard_id) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/makara/strategies/shard_aware.rb', line 17

def shard_strategy(shard_id)
  id = shard_id
  shard_strategy = @shards[id]
  unless shard_strategy
    shard_strategy = pool.shard_strategy_class.new(pool)
    @shards[id] = shard_strategy
  end
  shard_strategy
end