# class Gem::StreamUI::ThreadedDownloadReporter

A progress reporter that behaves nicely with threaded downloading.

### Constants

MUTEX

### Attributes

file_name [R]

The current file name being displayed

### Public Class Methods

new (out_stream, *args)
Source

    # File lib/rubygems/user_interaction.rb, line 553
    def initialize(out_stream, *args)
      @file_name = nil
      @out = out_stream
    end

Creates a new threaded download reporter that will display on `out_stream`. The other arguments are ignored.

### Public Instance Methods

done ()
Source

    # File lib/rubygems/user_interaction.rb, line 579
    def done
      # Do nothing.
    end

Indicates the download is complete.

fetch (file_name, *args)
Source

    # File lib/rubygems/user_interaction.rb, line 562
    def fetch(file_name, *args)
      if @file_name.nil?
        @file_name = file_name
        locked_puts "Fetching #{@file_name}"
      end
    end

Tells the download reporter that the `file_name` is being fetched. The other arguments are ignored.

update (bytes)
Source

    # File lib/rubygems/user_interaction.rb, line 572
    def update(bytes)
      # Do nothing.
    end

Updates the threaded download reporter for the given number of `bytes`.

### Private Instance Methods

locked_puts (message)
Source

    # File lib/rubygems/user_interaction.rb, line 585
    def locked_puts(message)
      MUTEX.synchronize do
        @out.puts message
      end
    end