123456789_123456789_123456789_123456789_123456789_

Class: Gem::StreamUI::ThreadedDownloadReporter

Relationships & Source Files
Inherits: Object
Defined in: lib/rubygems/user_interaction.rb

Overview

A progress reporter that behaves nicely with threaded downloading.

Constant Summary

Class Method Summary

Instance Attribute Summary

  • #file_name readonly

    The current file name being displayed.

Instance Method Summary

Constructor Details

.new(out_stream, *args) ⇒ ThreadedDownloadReporter

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

[ GitHub ]

  
# File 'lib/rubygems/user_interaction.rb', line 573

def initialize(out_stream, *args)
  @file_name = nil
  @out = out_stream
end

Instance Attribute Details

#file_name (readonly)

The current file name being displayed

[ GitHub ]

  
# File 'lib/rubygems/user_interaction.rb', line 567

attr_reader :file_name

Instance Method Details

#done

Indicates the download is complete.

[ GitHub ]

  
# File 'lib/rubygems/user_interaction.rb', line 599

def done
  # Do nothing.
end

#fetch(file_name, *args)

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

[ GitHub ]

  
# File 'lib/rubygems/user_interaction.rb', line 582

def fetch(file_name, *args)
  if @file_name.nil?
    @file_name = file_name
    locked_puts "Fetching #{@file_name}"
  end
end

#locked_puts(message) (private)

[ GitHub ]

  
# File 'lib/rubygems/user_interaction.rb', line 604

def locked_puts(message)
  MUTEX.synchronize do
    @out.puts message
  end
end

#update(bytes)

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

[ GitHub ]

  
# File 'lib/rubygems/user_interaction.rb', line 592

def update(bytes)
  # Do nothing.
end