p2p2 0.13.2 → 0.13.3
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/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:
|