Class: RedisClient::Cluster::ConcurrentWorker::None::Group

Inherits:
Object
  • Object
show all
Defined in:
lib/redis_client/cluster/concurrent_worker/none.rb

Defined Under Namespace

Classes: Task

Instance Method Summary collapse

Constructor Details

#initialize(size:) ⇒ Group

Returns a new instance of Group.



13
14
15
16
# File 'lib/redis_client/cluster/concurrent_worker/none.rb', line 13

def initialize(size:)
  @tasks = Array.new(size)
  @idx = 0
end

Instance Method Details

#closeObject



34
35
36
37
38
# File 'lib/redis_client/cluster/concurrent_worker/none.rb', line 34

def close
  @idx = 0
  @tasks.clear
  nil
end

#eachObject



27
28
29
30
31
32
# File 'lib/redis_client/cluster/concurrent_worker/none.rb', line 27

def each
  raise InvalidNumberOfTasks, "expected: #{@tasks.size}, actual: #{@idx}" if @idx != @tasks.size

  @tasks.each { |task| yield(task.id, task.result) }
  nil
end

#inspectObject



40
41
42
# File 'lib/redis_client/cluster/concurrent_worker/none.rb', line 40

def inspect
  "#<#{self.class.name} size: #{@idx}, max: #{@tasks.size}>"
end

#push(id, *args, **kwargs, &block) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/redis_client/cluster/concurrent_worker/none.rb', line 18

def push(id, *args, **kwargs, &block)
  raise InvalidNumberOfTasks, "max size reached: #{@idx}" if @idx == @tasks.size

  result = exec(*args, **kwargs, &block)
  @tasks[@idx] = Task.new(id: id, result: result)
  @idx += 1
  nil
end