Class: Roma::Client::ClientPool
- Inherits:
-
Object
- Object
- Roma::Client::ClientPool
- Defined in:
- lib/roma/client/client_pool.rb
Overview
Constant Summary collapse
- @@client_pools =
{}
Instance Attribute Summary collapse
-
#default_hash_name ⇒ Object
Returns the value of attribute default_hash_name.
-
#servers ⇒ Object
Returns the value of attribute servers.
-
#start_sync_routing_proc ⇒ Object
Returns the value of attribute start_sync_routing_proc.
Class Method Summary collapse
-
.client_pools ⇒ Object
get all pool.
-
.instance(type = :default) ⇒ Object
- get ClientPool instance type
-
identifier for client groups.
-
.release_all ⇒ Object
release all pool.
Instance Method Summary collapse
-
#add_plugin_module(m) ⇒ Object
add plugin module.
-
#client ⇒ Object
get RomaClient instance.
-
#clients ⇒ Object
get all clients.
-
#max_pool_size ⇒ Object
get max pool size.
-
#max_pool_size=(count) ⇒ Object
set max_pool_size.
-
#plugin_modules ⇒ Object
get plugin_modules.
-
#plugin_modules=(modules) ⇒ Object
set plugin modules.
-
#pool_count ⇒ Object
get pool count of clients.
-
#push_client(client) ⇒ Object
push RomaClient instance.
-
#release ⇒ Object
release all pool clients.
Instance Attribute Details
#default_hash_name ⇒ Object
Returns the value of attribute default_hash_name.
19 20 21 |
# File 'lib/roma/client/client_pool.rb', line 19 def default_hash_name @default_hash_name end |
#servers ⇒ Object
Returns the value of attribute servers.
18 19 20 |
# File 'lib/roma/client/client_pool.rb', line 18 def servers @servers end |
#start_sync_routing_proc ⇒ Object
Returns the value of attribute start_sync_routing_proc.
20 21 22 |
# File 'lib/roma/client/client_pool.rb', line 20 def start_sync_routing_proc @start_sync_routing_proc end |
Class Method Details
.client_pools ⇒ Object
get all pool
32 33 34 |
# File 'lib/roma/client/client_pool.rb', line 32 def self.client_pools @@client_pools end |
.instance(type = :default) ⇒ Object
get ClientPool instance
- type
-
identifier for client groups.
26 27 28 29 |
# File 'lib/roma/client/client_pool.rb', line 26 def self.instance(type = :default) @@client_pools[type] ||= new @@client_pools[type] end |
.release_all ⇒ Object
release all pool
37 38 39 |
# File 'lib/roma/client/client_pool.rb', line 37 def self.release_all @@client_pools = {} end |
Instance Method Details
#add_plugin_module(m) ⇒ Object
add plugin module
105 106 107 108 |
# File 'lib/roma/client/client_pool.rb', line 105 def add_plugin_module(m) @plugin_modules ||= [] @plugin_modules.push(m) end |
#client ⇒ Object
get RomaClient instance
- type
-
RomaClient instance group.
- return
-
RomaClient instance
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/roma/client/client_pool.rb', line 45 def client c = nil if @clients.empty? client = Roma::Client::RomaClient.new(servers, plugin_modules, start_sync_routing_proc) client.default_hash_name = default_hash_name c = client else c = @clients.pop end return c unless block_given? begin yield c ensure push_client(c) end end |
#clients ⇒ Object
get all clients
95 96 97 |
# File 'lib/roma/client/client_pool.rb', line 95 def clients @clients end |
#max_pool_size ⇒ Object
get max pool size
85 86 87 |
# File 'lib/roma/client/client_pool.rb', line 85 def max_pool_size @max_pool_size end |
#max_pool_size=(count) ⇒ Object
set max_pool_size
90 91 92 |
# File 'lib/roma/client/client_pool.rb', line 90 def max_pool_size=(count) @max_pool_size = count end |
#plugin_modules ⇒ Object
get plugin_modules
100 101 102 |
# File 'lib/roma/client/client_pool.rb', line 100 def plugin_modules @plugin_modules end |
#plugin_modules=(modules) ⇒ Object
set plugin modules
You can set class Array.
113 114 115 |
# File 'lib/roma/client/client_pool.rb', line 113 def plugin_modules=(modules) @plugin_modules = modules end |
#pool_count ⇒ Object
get pool count of clients
67 68 69 |
# File 'lib/roma/client/client_pool.rb', line 67 def pool_count @clients.size end |
#push_client(client) ⇒ Object
push RomaClient instance
78 79 80 81 82 |
# File 'lib/roma/client/client_pool.rb', line 78 def push_client(client) if @clients.size < max_pool_size @clients.push(client) end end |
#release ⇒ Object
release all pool clients
72 73 74 75 |
# File 'lib/roma/client/client_pool.rb', line 72 def release @clients.clear true end |