Move the spawn code out of the poll method.
This commit is contained in:
		
							parent
							
								
									caca0b1398
								
							
						
					
					
						commit
						d020c0c9bf
					
				@ -84,34 +84,38 @@ module Telepathy
 | 
				
			|||||||
            end
 | 
					            end
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private def spawn_workers
 | 
				
			||||||
 | 
					            spawn do
 | 
				
			||||||
 | 
					                loop do
 | 
				
			||||||
 | 
					                    action = @poll_channel.receive
 | 
				
			||||||
 | 
					                    case action
 | 
				
			||||||
 | 
					                    when Int64?
 | 
				
			||||||
 | 
					                        @last_update_id = action.nil? ? @last_update_id : action + 1
 | 
				
			||||||
 | 
					                        @update_channel.send get_updates 10
 | 
				
			||||||
 | 
					                    when Control
 | 
				
			||||||
 | 
					                        @update_channel.send action
 | 
				
			||||||
 | 
					                        break
 | 
				
			||||||
 | 
					                    end
 | 
				
			||||||
 | 
					                end
 | 
				
			||||||
 | 
					            end
 | 
				
			||||||
 | 
					            spawn do
 | 
				
			||||||
 | 
					                loop do
 | 
				
			||||||
 | 
					                    item = @update_channel.receive
 | 
				
			||||||
 | 
					                    case item
 | 
				
			||||||
 | 
					                    when Array(Update)
 | 
				
			||||||
 | 
					                        process_updates(item)
 | 
				
			||||||
 | 
					                        @poll_channel.send item.last?.try &.update_id
 | 
				
			||||||
 | 
					                    when Control
 | 
				
			||||||
 | 
					                        break
 | 
				
			||||||
 | 
					                    end
 | 
				
			||||||
 | 
					                end
 | 
				
			||||||
 | 
					            end
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        def poll
 | 
					        def poll
 | 
				
			||||||
            if !@poll_running
 | 
					            if !@poll_running
 | 
				
			||||||
                @poll_running = true
 | 
					                @poll_running = true
 | 
				
			||||||
                spawn do
 | 
					                spawn_workers
 | 
				
			||||||
                    loop do
 | 
					 | 
				
			||||||
                        action = @poll_channel.receive
 | 
					 | 
				
			||||||
                        case action
 | 
					 | 
				
			||||||
                        when Int64?
 | 
					 | 
				
			||||||
                            @last_update_id = action.nil? ? @last_update_id : action + 1
 | 
					 | 
				
			||||||
                            @update_channel.send get_updates 10
 | 
					 | 
				
			||||||
                        when Control
 | 
					 | 
				
			||||||
                            @update_channel.send action
 | 
					 | 
				
			||||||
                            break
 | 
					 | 
				
			||||||
                        end
 | 
					 | 
				
			||||||
                    end
 | 
					 | 
				
			||||||
                end
 | 
					 | 
				
			||||||
                spawn do
 | 
					 | 
				
			||||||
                    loop do
 | 
					 | 
				
			||||||
                        item = @update_channel.receive
 | 
					 | 
				
			||||||
                        case item
 | 
					 | 
				
			||||||
                        when Array(Update)
 | 
					 | 
				
			||||||
                            process_updates(item)
 | 
					 | 
				
			||||||
                            @poll_channel.send item.last?.try &.update_id
 | 
					 | 
				
			||||||
                        when Control
 | 
					 | 
				
			||||||
                            break
 | 
					 | 
				
			||||||
                        end
 | 
					 | 
				
			||||||
                    end
 | 
					 | 
				
			||||||
                end
 | 
					 | 
				
			||||||
            end
 | 
					            end
 | 
				
			||||||
            @poll_channel.send nil
 | 
					            @poll_channel.send nil
 | 
				
			||||||
        end
 | 
					        end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user