Parent

Files

Class/Module Index [+]

Quicksearch

Tarantool::EMDB

Public Instance Methods

_send_request(shard_numbers, read_write, response) click to toggle source
# 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
_send_to_one_shard(shard_number, read_write, response, feed) click to toggle source
# 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
_send_to_several_shards(shard_numbers, read_write, response, feed) click to toggle source
# 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

[Validate]

Generated with the Darkfish Rdoc Generator 2.