p2p2 0.13.2 → 0.13.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/p2p2/p1.rb +35 -6
- data/lib/p2p2/p2.rb +34 -5
- data/lib/p2p2/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b842b71209b16ce71a511f18800372793f12450b2b5fa19d63e734cb5af9ae4f
|
4
|
+
data.tar.gz: 5f5de12057407febe98aa968320be17346824120ba881c2556d768b351dd36d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c9bd5ddf876bcf5686110c2e2a399b8c6f0cb5dc308773e84d060f31a9df86160022d6acb4dce45ee4e4e895ce9dde98493dc1e22763d358565b559beb8e1eb
|
7
|
+
data.tar.gz: d909aee5d91e2ebca9b41966e5a49150ba6741b7c69559f169b346045edc9a3922cfbccebaf3939dbdb1abb85f2c0e509f49663a9fcff744e21f5e30d61c2dbf
|
data/lib/p2p2/p1.rb
CHANGED
@@ -107,7 +107,6 @@ module P2p2
|
|
107
107
|
sock = @socks[ sock_id ]
|
108
108
|
|
109
109
|
if sock
|
110
|
-
# puts "debug ctlr close #{ sock_id } #{ Time.new }"
|
111
110
|
add_closing( sock )
|
112
111
|
end
|
113
112
|
when CTL_RESUME
|
@@ -115,7 +114,6 @@ module P2p2
|
|
115
114
|
sock = @socks[ sock_id ]
|
116
115
|
|
117
116
|
if sock
|
118
|
-
puts "ctlr resume #{ sock_id } #{ Time.new }"
|
119
117
|
add_write( sock )
|
120
118
|
end
|
121
119
|
end
|
@@ -186,6 +184,7 @@ module P2p2
|
|
186
184
|
# puts "debug p2 addr #{ Addrinfo.new( info[ :p2_addr ] ).ip_unpack.inspect } #{ Time.new }"
|
187
185
|
info[ :last_traffic_at ] = now
|
188
186
|
loop_send_heartbeat( p1 )
|
187
|
+
loop_check_expire( p1 )
|
189
188
|
loop_send_status( p1 )
|
190
189
|
when A_NEW_APP
|
191
190
|
return if sockaddr != info[ :p2_addr ]
|
@@ -212,6 +211,8 @@ module P2p2
|
|
212
211
|
|
213
212
|
info[ :shadow_exts ][ shadow_id ] = {
|
214
213
|
shadow: shadow,
|
214
|
+
created_at: now,
|
215
|
+
last_recv_at: nil, # 上一次收到流量的时间
|
215
216
|
wbuff: '', # 写前缓存
|
216
217
|
cache: '', # 块读出缓存
|
217
218
|
chunks: [], # 块队列,写前达到块大小时结一个块 filename
|
@@ -424,6 +425,8 @@ module P2p2
|
|
424
425
|
else
|
425
426
|
ext[ :pieces ][ pack_id ] = data
|
426
427
|
end
|
428
|
+
|
429
|
+
ext[ :last_recv_at ] = now
|
427
430
|
end
|
428
431
|
|
429
432
|
##
|
@@ -680,18 +683,43 @@ module P2p2
|
|
680
683
|
sleep HEARTBEAT_INTERVAL
|
681
684
|
break if p1.closed?
|
682
685
|
|
686
|
+
@mutex.synchronize do
|
687
|
+
p1_info = @infos[ p1 ]
|
688
|
+
send_heartbeat( p1, p1_info[ :p2_addr ] )
|
689
|
+
end
|
690
|
+
end
|
691
|
+
end
|
692
|
+
end
|
693
|
+
|
694
|
+
def loop_check_expire( p1 )
|
695
|
+
Thread.new do
|
696
|
+
loop do
|
697
|
+
sleep 60
|
698
|
+
break if p1.closed?
|
699
|
+
|
700
|
+
now = Time.new
|
683
701
|
p1_info = @infos[ p1 ]
|
684
702
|
|
685
|
-
if
|
703
|
+
if now - p1_info[ :last_traffic_at ] > EXPIRE_AFTER
|
686
704
|
@mutex.synchronize do
|
705
|
+
# puts "debug ctlw close p1 #{ p1.object_id } #{ Time.new } p#{ Process.pid }"
|
687
706
|
@ctlw.write( [ CTL_CLOSE, p1.object_id ].pack( 'CQ>' ) )
|
688
707
|
end
|
689
708
|
|
690
|
-
|
709
|
+
break
|
691
710
|
end
|
692
711
|
|
693
|
-
|
694
|
-
|
712
|
+
exts = p1_info[ :shadow_exts ].select{ | _, ext | now - ext[ :created_at ] > 5 }
|
713
|
+
|
714
|
+
if exts.any?
|
715
|
+
@mutex.synchronize do
|
716
|
+
exts.each do | shadow_id, ext |
|
717
|
+
if ext[ :last_recv_at ].nil? || ( now - ext[ :last_recv_at ] > EXPIRE_AFTER )
|
718
|
+
# puts "debug ctlw close shadow #{ shadow_id } #{ Time.new } p#{ Process.pid }"
|
719
|
+
@ctlw.write( [ CTL_CLOSE, shadow_id ].pack( 'CQ>' ) )
|
720
|
+
end
|
721
|
+
end
|
722
|
+
end
|
695
723
|
end
|
696
724
|
end
|
697
725
|
end
|
@@ -731,6 +759,7 @@ module P2p2
|
|
731
759
|
|
732
760
|
if p1_info[ :paused ] && ( p1_info[ :shadow_exts ].map{ | _, ext | ext[ :wmems ].size }.sum < RESUME_BELOW )
|
733
761
|
@mutex.synchronize do
|
762
|
+
puts "ctlw resume #{ p1.object_id } #{ Time.new }"
|
734
763
|
@ctlw.write( [ CTL_RESUME, p1.object_id ].pack( 'CQ>' ) )
|
735
764
|
p1_info[ :paused ] = false
|
736
765
|
end
|
data/lib/p2p2/p2.rb
CHANGED
@@ -109,7 +109,6 @@ module P2p2
|
|
109
109
|
sock = @socks[ sock_id ]
|
110
110
|
|
111
111
|
if sock
|
112
|
-
# puts "debug ctlr close #{ sock_id } #{ Time.new }"
|
113
112
|
add_closing( sock )
|
114
113
|
end
|
115
114
|
when CTL_RESUME
|
@@ -117,7 +116,6 @@ module P2p2
|
|
117
116
|
sock = @socks[ sock_id ]
|
118
117
|
|
119
118
|
if sock
|
120
|
-
puts "ctlr resume #{ sock_id } #{ Time.new }"
|
121
119
|
add_write( sock )
|
122
120
|
end
|
123
121
|
end
|
@@ -148,6 +146,8 @@ module P2p2
|
|
148
146
|
@p2_info[ :waitings ][ app_id ] = []
|
149
147
|
@p2_info[ :app_exts ][ app_id ] = {
|
150
148
|
app: app,
|
149
|
+
created_at: Time.new,
|
150
|
+
last_recv_at: nil, # 上一次收到流量的时间
|
151
151
|
wbuff: '', # 写前缓存
|
152
152
|
cache: '', # 块读出缓存
|
153
153
|
chunks: [], # 块队列,写前达到块大小时结一个块 filename
|
@@ -239,6 +239,7 @@ module P2p2
|
|
239
239
|
# puts "debug p1 addr #{ Addrinfo.new( info[ :p1_addr ] ).ip_unpack.inspect } #{ Time.new }"
|
240
240
|
info[ :last_traffic_at ] = now
|
241
241
|
loop_send_heartbeat( p2 )
|
242
|
+
loop_check_expire( p2 )
|
242
243
|
loop_send_status( p2 )
|
243
244
|
when PAIRED
|
244
245
|
return if sockaddr != info[ :p1_addr ]
|
@@ -443,6 +444,8 @@ module P2p2
|
|
443
444
|
else
|
444
445
|
ext[ :pieces ][ pack_id ] = data
|
445
446
|
end
|
447
|
+
|
448
|
+
ext[ :last_recv_at ] = now
|
446
449
|
end
|
447
450
|
|
448
451
|
##
|
@@ -710,18 +713,43 @@ module P2p2
|
|
710
713
|
sleep HEARTBEAT_INTERVAL
|
711
714
|
break if p2.closed?
|
712
715
|
|
716
|
+
@mutex.synchronize do
|
717
|
+
p2_info = @infos[ p2 ]
|
718
|
+
send_heartbeat( p2, p2_info[ :p1_addr ] )
|
719
|
+
end
|
720
|
+
end
|
721
|
+
end
|
722
|
+
end
|
723
|
+
|
724
|
+
def loop_check_expire( p2 )
|
725
|
+
Thread.new do
|
726
|
+
loop do
|
727
|
+
sleep 60
|
728
|
+
break if p2.closed?
|
729
|
+
|
730
|
+
now = Time.new
|
713
731
|
p2_info = @infos[ p2 ]
|
714
732
|
|
715
|
-
if
|
733
|
+
if now - p2_info[ :last_traffic_at ] > EXPIRE_AFTER
|
716
734
|
@mutex.synchronize do
|
735
|
+
# puts "debug ctlw close p2 #{ p2.object_id } #{ Time.new } p#{ Process.pid }"
|
717
736
|
@ctlw.write( [ CTL_CLOSE, p2.object_id ].pack( 'CQ>' ) )
|
718
737
|
end
|
719
738
|
|
720
739
|
break
|
721
740
|
end
|
722
741
|
|
723
|
-
|
724
|
-
|
742
|
+
exts = p2_info[ :app_exts ].select{ | _, ext | now - ext[ :created_at ] > 5 }
|
743
|
+
|
744
|
+
if exts.any?
|
745
|
+
@mutex.synchronize do
|
746
|
+
exts.each do | app_id, ext |
|
747
|
+
if ext[ :last_recv_at ].nil? || ( now - ext[ :last_recv_at ] > EXPIRE_AFTER )
|
748
|
+
# puts "debug ctlw close app #{ app_id } #{ Time.new } p#{ Process.pid }"
|
749
|
+
@ctlw.write( [ CTL_CLOSE, app_id ].pack( 'CQ>' ) )
|
750
|
+
end
|
751
|
+
end
|
752
|
+
end
|
725
753
|
end
|
726
754
|
end
|
727
755
|
end
|
@@ -761,6 +789,7 @@ module P2p2
|
|
761
789
|
|
762
790
|
if p2_info[ :paused ] && ( p2_info[ :app_exts ].map{ | _, ext | ext[ :wmems ].size }.sum < RESUME_BELOW )
|
763
791
|
@mutex.synchronize do
|
792
|
+
puts "ctlw resume #{ p2.object_id } #{ Time.new }"
|
764
793
|
@ctlw.write( [ CTL_RESUME, p2.object_id ].pack( 'CQ>' ) )
|
765
794
|
p2_info[ :paused ] = false
|
766
795
|
end
|
data/lib/p2p2/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: p2p2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- takafan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: 内网里的任意应用,访问另一个内网里的应用服务端。
|
14
14
|
email:
|