p2p2 0.19.0 → 0.20.0
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/p2p2/head.rb +3 -2
- data/lib/p2p2/p1_worker.rb +48 -60
- data/lib/p2p2/p2_worker.rb +33 -31
- data/lib/p2p2/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5621af269a434cac452523cfccd1816c1246b37936296df09e5db7a28ed0701b
|
4
|
+
data.tar.gz: 718b2f29404d97724b21638fcdd8f683ac1e987cc94b482e38252dc5485afd8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 680e7ad7a8fbbaf4f5d020d6cbf988db7ba225ff38fce951069c9bbb211923ed54165a05440842ce929861ea32d94caa4683b424a51cedade77ff9bb2ade2d6a
|
7
|
+
data.tar.gz: 9a188e36e5f5fa650b8074d263dcc16a7578ea6b9a5135faf9fb73af17695f2c9af33f14d1aaed81fe113b55f37f3653d325826bfb32c3cbfed8797e096d41dc
|
data/lib/p2p2/head.rb
CHANGED
@@ -6,12 +6,13 @@ module P2p2
|
|
6
6
|
RESUME_BELOW = 50_000 # 降到多少以下恢复写
|
7
7
|
EXPIRE_NEW = 10 # 创建之后多久没有流量进来,过期
|
8
8
|
EXPIRE_AFTER = 300 # 多久没有新流量,过期
|
9
|
-
CHECK_EXPIRE_INTERVAL =
|
9
|
+
CHECK_EXPIRE_INTERVAL = 60 # 检查过期间隔
|
10
10
|
STATUS_INTERVAL = 0.5 # 发送状态间隔
|
11
11
|
SEND_STATUS_UNTIL = 10 # 持续的告之对面状态,直到没有流量往来,持续多少秒
|
12
12
|
BREAK_SEND_MISS = 10_000 # miss包个数上限,达到上限忽略要后面的段,可控碎片缓存
|
13
13
|
CONFUSE_UNTIL = 5 # 混淆前几个包
|
14
|
-
|
14
|
+
HEARTBEAT_INTERVAL = 5 # 心跳间隔
|
15
|
+
UPDATE_ROOM_INTERVAL = 60 # 刷新房间间隔
|
15
16
|
PEER_ADDR = 1
|
16
17
|
HEARTBEAT = 2
|
17
18
|
A_NEW_SOURCE = 3
|
data/lib/p2p2/p1_worker.rb
CHANGED
@@ -28,8 +28,7 @@ module P2p2
|
|
28
28
|
#
|
29
29
|
def looping
|
30
30
|
puts "#{ Time.new } looping"
|
31
|
-
|
32
|
-
loop_check_expire
|
31
|
+
loop_heartbeat
|
33
32
|
loop_check_status
|
34
33
|
|
35
34
|
loop do
|
@@ -80,76 +79,65 @@ module P2p2
|
|
80
79
|
private
|
81
80
|
|
82
81
|
##
|
83
|
-
# loop
|
82
|
+
# loop heartbeat
|
84
83
|
#
|
85
|
-
def
|
84
|
+
def loop_heartbeat( check_at = Time.new )
|
86
85
|
Thread.new do
|
87
86
|
loop do
|
88
|
-
sleep
|
87
|
+
sleep HEARTBEAT_INTERVAL
|
89
88
|
|
90
89
|
@mutex.synchronize do
|
91
|
-
if !@tund.closed? && @tund_info[ :peer_addr ].nil?
|
92
|
-
now = Time.new
|
93
|
-
|
94
|
-
if now - update_at >= 60
|
95
|
-
data = @room
|
96
|
-
update_at = now
|
97
|
-
else
|
98
|
-
data = [ rand( 128 ) ].pack( 'C' )
|
99
|
-
end
|
100
|
-
|
101
|
-
add_tund_ctlmsg( data, @p2pd_addr )
|
102
|
-
next_tick
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
##
|
110
|
-
# loop check expire
|
111
|
-
#
|
112
|
-
def loop_check_expire
|
113
|
-
Thread.new do
|
114
|
-
loop do
|
115
|
-
sleep CHECK_EXPIRE_INTERVAL
|
116
|
-
|
117
|
-
@mutex.synchronize do
|
118
|
-
need_trigger = false
|
119
90
|
now = Time.new
|
120
91
|
|
121
|
-
|
122
|
-
if
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
92
|
+
unless @tund.closed?
|
93
|
+
if @tund_info[ :peer_addr ]
|
94
|
+
if @tund_info[ :tun_addr ]
|
95
|
+
if now - check_at >= CHECK_EXPIRE_INTERVAL
|
96
|
+
if now - @tund_info[ :last_recv_at ] > EXPIRE_AFTER
|
97
|
+
puts "#{ Time.new } expire tund"
|
98
|
+
set_is_closing( @tund )
|
99
|
+
else
|
100
|
+
@tund_info[ :dst_exts ].each do | dst_local_port, dst_ext |
|
101
|
+
if dst_ext[ :dst ].closed? && ( now - dst_ext[ :last_continue_at ] > EXPIRE_AFTER )
|
102
|
+
puts "#{ Time.new } expire dst ext #{ dst_local_port }"
|
103
|
+
del_dst_ext( dst_local_port )
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
@dst_infos.each do | dst, dst_info |
|
109
|
+
if dst_info[ :last_recv_at ].nil? && ( now - dst_info[ :created_at ] > EXPIRE_NEW )
|
110
|
+
puts "#{ Time.new } expire dst"
|
111
|
+
set_is_closing( dst )
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
check_at = now
|
133
116
|
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
need_trigger = true
|
138
|
-
end
|
139
117
|
|
140
|
-
|
141
|
-
|
118
|
+
# puts "debug2 heartbeat"
|
119
|
+
add_tund_ctlmsg( pack_a_heartbeat )
|
120
|
+
next_tick
|
121
|
+
elsif now - @tund_info[ :last_recv_at ] > EXPIRE_NEW
|
122
|
+
# no tun addr
|
123
|
+
puts "#{ Time.new } expire new tund"
|
124
|
+
set_is_closing( @tund )
|
125
|
+
next_tick
|
126
|
+
end
|
127
|
+
else
|
128
|
+
# no peer addr
|
129
|
+
if now - check_at >= UPDATE_ROOM_INTERVAL
|
130
|
+
data = @room
|
131
|
+
check_at = now
|
132
|
+
else
|
133
|
+
data = [ rand( 128 ) ].pack( 'C' )
|
134
|
+
end
|
142
135
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
need_trigger = true
|
136
|
+
# puts "debug2 update room"
|
137
|
+
add_tund_ctlmsg( data, @p2pd_addr )
|
138
|
+
next_tick
|
147
139
|
end
|
148
140
|
end
|
149
|
-
|
150
|
-
if need_trigger
|
151
|
-
next_tick
|
152
|
-
end
|
153
141
|
end
|
154
142
|
end
|
155
143
|
end
|
data/lib/p2p2/p2_worker.rb
CHANGED
@@ -28,7 +28,7 @@ module P2p2
|
|
28
28
|
#
|
29
29
|
def looping
|
30
30
|
puts "#{ Time.new } looping"
|
31
|
-
|
31
|
+
loop_heartbeat
|
32
32
|
loop_check_status
|
33
33
|
|
34
34
|
loop do
|
@@ -81,49 +81,51 @@ module P2p2
|
|
81
81
|
private
|
82
82
|
|
83
83
|
##
|
84
|
-
# loop
|
84
|
+
# loop heartbeat
|
85
85
|
#
|
86
|
-
def
|
86
|
+
def loop_heartbeat( check_at = Time.new )
|
87
87
|
Thread.new do
|
88
88
|
loop do
|
89
|
-
sleep
|
89
|
+
sleep HEARTBEAT_INTERVAL
|
90
90
|
|
91
91
|
@mutex.synchronize do
|
92
|
-
need_trigger = false
|
93
92
|
now = Time.new
|
94
93
|
|
95
|
-
if @tun && !@tun.closed? && @tun_info[ :
|
96
|
-
if
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
94
|
+
if @tun && !@tun.closed? && @tun_info[ :peer_addr ]
|
95
|
+
if @tun_info[ :tund_addr ]
|
96
|
+
if now - check_at >= CHECK_EXPIRE_INTERVAL
|
97
|
+
if now - @tun_info[ :last_recv_at ] > EXPIRE_AFTER
|
98
|
+
puts "#{ Time.new } expire tun"
|
99
|
+
set_is_closing( @tun )
|
100
|
+
else
|
101
|
+
@tun_info[ :src_exts ].each do | src_id, src_ext |
|
102
|
+
if src_ext[ :src ].closed? && ( now - src_ext[ :last_continue_at ] > EXPIRE_AFTER )
|
103
|
+
puts "#{ Time.new } expire src ext #{ src_id }"
|
104
|
+
del_src_ext( src_id )
|
105
|
+
end
|
106
|
+
end
|
107
107
|
end
|
108
|
-
end
|
109
|
-
end
|
110
108
|
|
111
|
-
|
112
|
-
|
109
|
+
@src_infos.each do | src, src_info |
|
110
|
+
if src_info[ :last_recv_at ].nil? && ( now - src_info[ :created_at ] > EXPIRE_NEW )
|
111
|
+
puts "#{ Time.new } expire src"
|
112
|
+
set_is_closing( src )
|
113
|
+
end
|
114
|
+
end
|
113
115
|
|
114
|
-
|
115
|
-
|
116
|
+
check_at = now
|
117
|
+
end
|
116
118
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
119
|
+
# puts "debug2 heartbeat"
|
120
|
+
add_tun_ctlmsg( pack_a_heartbeat )
|
121
|
+
next_tick
|
122
|
+
elsif now - @tun_info[ :last_recv_at ] > EXPIRE_NEW
|
123
|
+
# no tund addr
|
124
|
+
puts "#{ Time.new } expire new tun"
|
125
|
+
set_is_closing( @tun )
|
126
|
+
next_tick
|
121
127
|
end
|
122
128
|
end
|
123
|
-
|
124
|
-
if need_trigger
|
125
|
-
next_tick
|
126
|
-
end
|
127
129
|
end
|
128
130
|
end
|
129
131
|
end
|
data/lib/p2p2/version.rb
CHANGED