class QuartzTorrent::PeerClient

Public Class Methods

new(ignored) click to toggle source
# File lib/quartz_flow/mock_client.rb, line 166
def initialize(ignored)
  @words = Words.new
  @torrents = {}
  7.times{ addTorrent }
  Thread.new do
    while true
      begin
        @torrents.each{ |k,t| t.downloadRate += (rand(1000) - 500)}
      rescue
        puts "Exception in Mock PeerClient: #{$!}" 
      end
      sleep 2
    end
  end
end

Public Instance Methods

addTorrent() click to toggle source
# File lib/quartz_flow/mock_client.rb, line 198
def addTorrent
  d = makeFakeTorrentDelegate
  @torrents[d.infoHash] = d
end
addTorrentByMetainfo(info) click to toggle source
# File lib/quartz_flow/mock_client.rb, line 191
def addTorrentByMetainfo(info)
end
port=(p) click to toggle source
# File lib/quartz_flow/mock_client.rb, line 182
def port=(p)
end
start() click to toggle source
# File lib/quartz_flow/mock_client.rb, line 185
def start
end
stop() click to toggle source
# File lib/quartz_flow/mock_client.rb, line 188
def stop
end
torrentData(infoHash = nil) click to toggle source
# File lib/quartz_flow/mock_client.rb, line 194
def torrentData(infoHash = nil)
  @torrents
end

Private Instance Methods

makeFakeTorrentDelegate() click to toggle source
# File lib/quartz_flow/mock_client.rb, line 204
def makeFakeTorrentDelegate
  result = TorrentDataDelegate.new
  name = ""
  (rand(3)+1).times do 
    name << @words.randomWord + " "
  end
  result.recommendedName = name
  result.infoHash = randomBinaryData 20
  result.downloadRate = 100*1024
  result.uploadRate = 5*1024
  result.downloadRateDataOnly = 100*1024
  result.uploadRateDataOnly = 5*1024
  result.completedBytes = 800
  result.peers = []
  result.state = :running
  result.paused = false

  result.info = Metainfo::Info.new
  result.info.files = [Metainfo::FileInfo.new(1000, "file1"), Metainfo::FileInfo.new(1000, "file2")]

  3.times do
    
    peer = Peer.new(TrackerPeer.new("176.23.54.201", 5000))
    peer.amChoked = false
    peer.amInterested = false
    peer.peerChoked = false
    peer.peerInterested = true
    peer.uploadRate = 20*1024
    peer.downloadRate = 10*1024

    result.peers.push peer
  end

  result
end
randomBinaryData(len) click to toggle source
# File lib/quartz_flow/mock_client.rb, line 240
def randomBinaryData(len)
  result = ""
  len.times{ result << rand(256) }
  result
end