Class: Tarantool::EMDB::ConcatterReplace

Inherits:
Object
  • Object
show all
Defined in:
lib/tarantool/em_db.rb

Instance Method Summary collapse

Constructor Details

#initialize(count, feed) ⇒ ConcatterReplace

Returns a new instance of ConcatterReplace.



186
187
188
189
190
# File 'lib/tarantool/em_db.rb', line 186

def initialize(count, feed)
  @result = []
  @count = count
  @feed = feed
end

Instance Method Details

#call(array) ⇒ Object



191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'lib/tarantool/em_db.rb', line 191

def call(array)
  if @count > 0
    case array
    when Array
      @result.concat array
    when ::Tarantool::TupleDoesntExists
      @result << array
    when Exception
      @result = array
      @count = 1
    else
      @result << array
    end
    if (@count -= 1) == 0
      if Exception === @result
        @feed.call @result
      elsif @result.all?{|r| ::Tarantool::TupleDoesntExists === r}
        @feed.call @result.first
      else
        @result.delete_if{|r| ::Tarantool::TupleDoesntExists === r}
        if Integer === @result.first
          @feed.call @result.inject(0){|s, i| s + i}
        else
          @feed.call @result
        end
      end
    end
  end
end