DB
# File lib/tarantool/em_db.rb, line 22 def _send_request(shard_numbers, read_write, response) if @closed exc = ::IProto::Disconnected.new("Tarantool is closed") if EM.reactor_running? EM.next_tick Curry1.new(response.cb, exc) else response.cb.call exc end else feed = FeedResponse.new(response) shard_numbers = shard_numbers[0] if Array === shard_numbers && shard_numbers.size == 1 if Array === shard_numbers _send_to_several_shards(shard_numbers, read_write, response, feed) else _send_to_one_shard(shard_numbers, read_write, response, feed) end end end
# File lib/tarantool/em_db.rb, line 41 def _send_to_one_shard(shard_number, read_write, response, feed) if (replicas = _shard(shard_number)).size == 1 replicas[0].send_request(response.request_type, response.body, OneReplica.new(response, feed)) elsif read_write == :read replicas = replicas.shuffle if @replica_strategy == :round_robin EM.next_tick OneShardRead.new(replicas, response, feed) else EM.next_tick OneShardWrite.new(replicas, response, feed) end end
# File lib/tarantool/em_db.rb, line 198 def _send_to_several_shards(shard_numbers, read_write, response, feed) concat = read_write != :replace ? Concatter.new(shard_numbers.size, feed) : ConcatterReplace.new(shard_numbers.size, feed) for shard in shard_numbers _send_to_one_shard(shard, read_write, response, concat) end end
Generated with the Darkfish Rdoc Generator 2.