torrenter 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/torrenter.rb +3 -0
- data/lib/torrenter/peer/buffer_state.rb +5 -1
- data/lib/torrenter/peer/seed.rb +18 -0
- data/lib/torrenter/reactor.rb +5 -2
- data/lib/torrenter/torrent_reader.rb +6 -4
- data/lib/torrenter/torrent_reader/piece_constructor.rb +0 -9
- data/lib/torrenter/torrent_reader/piece_index.rb +0 -8
- data/lib/torrenter/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0c2b67a7d7f4f57dcf57fd67990b0faf6fe2817
|
4
|
+
data.tar.gz: 17efbbf5c9c17387bda7daf6bc735c59c54653bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f9aa55935462a0354d28090b54250386358f31c8ccbc382e187a6ab6e4e31eeccb59e169a1330fa258a8f5fc13c4052358709c4886367b52a3ea87c29bfe70f
|
7
|
+
data.tar.gz: a3d9d9011aa5211fcd41fa8db189b85331b12792859628134b869dd5bbe32364ac8e9f93f8898d2d8bbdbaa7234713087cd55cbfb31e724b823409a784d13f65
|
data/lib/torrenter.rb
CHANGED
@@ -2,9 +2,11 @@ require 'socket'
|
|
2
2
|
require 'digest/sha1'
|
3
3
|
require 'bencode'
|
4
4
|
require 'fileutils'
|
5
|
+
require 'json'
|
5
6
|
require 'torrenter/constants'
|
6
7
|
require 'torrenter/peer'
|
7
8
|
require 'torrenter/peer/buffer_state'
|
9
|
+
require 'torrenter/peer/seed'
|
8
10
|
require 'torrenter/reactor'
|
9
11
|
require 'torrenter/tracker'
|
10
12
|
require 'torrenter/tracker/http_tracker'
|
@@ -14,6 +16,7 @@ require 'torrenter/torrent_reader/piece'
|
|
14
16
|
require 'torrenter/torrent_reader/piece_index'
|
15
17
|
require 'torrenter/torrent_reader/piece_constructor'
|
16
18
|
require 'torrenter/version'
|
19
|
+
require 'pry'
|
17
20
|
|
18
21
|
module Torrenter
|
19
22
|
class Torrent
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Torrenter
|
2
|
+
class Peer
|
3
|
+
class Seed
|
4
|
+
def initialize
|
5
|
+
@server = TCPServer.new(6881)
|
6
|
+
end
|
7
|
+
|
8
|
+
def server_loop
|
9
|
+
begin
|
10
|
+
Thread.start(@server.accept_nonblock) do |client|
|
11
|
+
binding.pry if client
|
12
|
+
end
|
13
|
+
rescue IO::EAGAINWaitReadable
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/torrenter/reactor.rb
CHANGED
@@ -12,7 +12,7 @@ module Torrenter
|
|
12
12
|
|
13
13
|
def message_reactor
|
14
14
|
@piece_index.verify_status
|
15
|
-
@peers.each { |peer| peer.connect }
|
15
|
+
@peers.each { |peer| peer.connect unless active_peers.size > 5 }
|
16
16
|
puts "You are now connected to #{active_peers.size} peers."
|
17
17
|
loop do
|
18
18
|
break if finished?
|
@@ -20,7 +20,7 @@ module Torrenter
|
|
20
20
|
if peer.peer_state
|
21
21
|
peer.connection_state(@piece_index, have)
|
22
22
|
else
|
23
|
-
peer.connect if Time.now.to_i %
|
23
|
+
peer.connect if Time.now.to_i % ((active_peers.size * 10) + 1) == 0
|
24
24
|
end
|
25
25
|
end
|
26
26
|
@piece_index.clean_peers
|
@@ -28,6 +28,9 @@ module Torrenter
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
def server_listen
|
32
|
+
end
|
33
|
+
|
31
34
|
def have
|
32
35
|
->(index, peer) { @piece_index[index].add_peer(peer) }
|
33
36
|
end
|
@@ -89,16 +89,18 @@ module Torrenter
|
|
89
89
|
}
|
90
90
|
end
|
91
91
|
|
92
|
-
def
|
92
|
+
def trackers
|
93
93
|
url_list.compact.map do |url|
|
94
|
-
|
94
|
+
if url.include?('http://')
|
95
95
|
Tracker::HTTPTracker.new(url, tracker_params)
|
96
96
|
else
|
97
97
|
Tracker::UDPTracker.new(url, tracker_params)
|
98
98
|
end
|
99
|
-
|
100
|
-
tracker.connect
|
101
99
|
end
|
102
100
|
end
|
101
|
+
|
102
|
+
def connect_trackers
|
103
|
+
trackers.map { |tracker| tracker.connect }
|
104
|
+
end
|
103
105
|
end
|
104
106
|
end
|
@@ -9,21 +9,12 @@ module Torrenter
|
|
9
9
|
@sha_hashes = sha_hashes
|
10
10
|
@piece_length = piece_length
|
11
11
|
@index = PieceIndex.new(piece_length)
|
12
|
-
@excess_bytes = 0
|
13
12
|
end
|
14
13
|
|
15
14
|
def index_length
|
16
15
|
@sha_hashes.size / 20
|
17
16
|
end
|
18
17
|
|
19
|
-
def correct?
|
20
|
-
total_left == @arr.map { |x| x.tally }.inject { |x,y| x + y }
|
21
|
-
end
|
22
|
-
|
23
|
-
def total_left
|
24
|
-
@files.map { |f| f['length']}.inject { |x,y| x + y }
|
25
|
-
end
|
26
|
-
|
27
18
|
def final_piece?
|
28
19
|
index_length == @index.size + 1
|
29
20
|
end
|
@@ -59,10 +59,6 @@ module Torrenter
|
|
59
59
|
@piece_index.size
|
60
60
|
end
|
61
61
|
|
62
|
-
def length
|
63
|
-
@piece_index.length
|
64
|
-
end
|
65
|
-
|
66
62
|
def [](index)
|
67
63
|
@piece_index[index]
|
68
64
|
end
|
@@ -71,10 +67,6 @@ module Torrenter
|
|
71
67
|
@piece_index[i] = Piece.new(i, piece_length, val)
|
72
68
|
end
|
73
69
|
|
74
|
-
def push(val)
|
75
|
-
@piece_index[size] = val
|
76
|
-
end
|
77
|
-
|
78
70
|
def last
|
79
71
|
@piece_index.last
|
80
72
|
end
|
data/lib/torrenter/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: torrenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- wismer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: BitTorrent Client written in Ruby
|
14
14
|
email:
|
@@ -23,6 +23,7 @@ files:
|
|
23
23
|
- lib/torrenter/constants.rb
|
24
24
|
- lib/torrenter/peer.rb
|
25
25
|
- lib/torrenter/peer/buffer_state.rb
|
26
|
+
- lib/torrenter/peer/seed.rb
|
26
27
|
- lib/torrenter/reactor.rb
|
27
28
|
- lib/torrenter/torrent_reader.rb
|
28
29
|
- lib/torrenter/torrent_reader/piece.rb
|