class FDB::TransactionRead
def get_range(bkeysel, ekeysel, options={}, &block)
def get_range(bkeysel, ekeysel, options={}, &block) defaults = { :limit => 0, :reverse => false, :streaming_mode => :iterator } options = defaults.merge options bsel = to_selector bkeysel esel = to_selector ekeysel if options[:streaming_mode].kind_of? Symbol streaming_mode = @@StreamingMode[options[:streaming_mode].to_s.upcase] raise ArgumentError, "#{options[:streaming_mode]} is not a valid streaming mode" if !streaming_mode streaming_mode = streaming_mode[0] else streaming_mode = options[:streaming_mode] end r = @@RangeEnum.new(lambda {|bsel, esel, limit, streaming_mode, iteration, reverse| begin_key = FDB.key_to_bytes(bsel.key) end_key = FDB.key_to_bytes(esel.key) FDB::FutureKeyValueArray.new(FDBC.fdb_transaction_get_range(@tpointer, begin_key, begin_key.bytesize, bsel.or_equal, bsel.offset, end_key, end_key.bytesize, esel.or_equal, esel.offset, limit, 0, streaming_mode, iteration, @is_snapshot, reverse)) }, bsel, esel, options[:limit], options[:reverse] ? 1 : 0, streaming_mode) if !block_given? r else r.each &block end end