Method: QRPC::Client::Dispatcher#pool!

Defined in:
lib/qrpc/client/dispatcher.rb

#pool!Object

Starts input (results) pooling.

Since:

  • 0.3.0



163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/qrpc/client/dispatcher.rb', line 163

def pool!
    
    # Results processing logic
    processor = Proc::new do |job|
        response = JsonRpcObjects::Response::parse(job.body)
        id = response.id.to_sym
        job.delete()
        
        if @jobs.include? id
            @jobs[id].assign_result(response)
        end
        
        @jobs.delete(id)
    end
    
    # Runs processor for each job            
    parent = self
    worker = EM.spawn do
        parent.input_queue { |q| q.each_job(&processor) }
    end
    
    ##
    
    worker.run
    @pooling = true
    
end