p2p2 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68069e5326b6a25498cf1dd4adb8733fe2ec2bf809126f1f500f9cb734d4ea47
4
- data.tar.gz: 61610f3b5e55f3d42df523e154f277e1a22a87dad56b93d220d4f4a39190b36e
3
+ metadata.gz: ca925ece6d1579aa867c70dbc92911eb3c0046e855c2579115738f2688dd08c5
4
+ data.tar.gz: 33c156afa25319ed03758e530aab81ae1ddc2e27059ea7bc5dae463a1a14761b
5
5
  SHA512:
6
- metadata.gz: a5d286c1091dab33efac9d24e9c9535835420922dba75447b38f264bf3d655cbb5fd9d5cf43a90f9af60a9b1fef63a1c47f162a083e0a67227ffafcf815606a8
7
- data.tar.gz: 18bb9e9992555dc486a25d7f81b1d7e63036be78d5c8b849073a1217dbbbe67442f9486ce5984e6a937abcdf208bfce01d46c98b278c74396ae36f9332dc3367
6
+ metadata.gz: 8bf48c99e8242a66ec4f9774dd494ed57c9720c404e3a8cb0481c74dc3bcbd3fbf97c6cf2cfece23fdb7ad1bc5aa13cbf109baf929ef038ab756c2a3bb28a6ba
7
+ data.tar.gz: 3cb4955440287396afb177f13a800a67eca199531fc1956d8004a44372e8fc3a0ebd446b5ad959c271470fabda7ebbfe6358cc2dba1f6421bf55dd6caf7a2e4f
@@ -2,12 +2,13 @@ module P2p2
2
2
  PACK_SIZE = 1328 # 包大小 1400(console MTU) - 8(PPPoE header) - 40(IPv6 header) - 8(UDP header) - 8(app/shadow id) - 8(pack id) = 1328
3
3
  CHUNK_SIZE = PACK_SIZE * 1000 # 块大小
4
4
  WBUFFS_LIMIT = 1000 # 写前上限,超过上限结一个块
5
- WMEMS_LIMIT = 100_000 # 写后上限,到达上限暂停写
5
+ WMEMS_LIMIT = 100_000 # 写后上限,达到上限暂停写
6
6
  RESUME_BELOW = 50_000 # 降到多少以下恢复写
7
7
  EXPIRE_AFTER = 1800 # 多久过期
8
8
  HEARTBEAT_INTERVAL = 3 # 心跳间隔
9
9
  STATUS_INTERVAL = 0.3 # 发送状态间隔
10
- SEND_STATUS_UNTIL = 20 # 持续的告之对面状态,直到没有流量往来,持续多少秒
10
+ SEND_STATUS_UNTIL = 10 # 持续的告之对面状态,直到没有流量往来,持续多少秒
11
+ BREAK_SEND_MISS = 10_000 # miss包个数上限,达到上限忽略要后面的段,可控碎片缓存
11
12
  PEER_ADDR = 1
12
13
  HEARTBEAT = 2
13
14
  A_NEW_APP = 3
@@ -295,8 +295,14 @@ module P2p2
295
295
  ranges << [ curr_pack_id, ext[ :biggest_app_pack_id ] ]
296
296
  end
297
297
 
298
+ pack_count = 0
298
299
  # puts "debug #{ ext[ :continue_app_pack_id ] }/#{ ext[ :biggest_app_pack_id ] } send MISS #{ ranges.size }"
299
300
  ranges.each do | pack_id_begin, pack_id_end |
301
+ if pack_count >= BREAK_SEND_MISS
302
+ puts "break send miss at #{ pack_id_begin } #{ Time.new }"
303
+ break
304
+ end
305
+
300
306
  ctlmsg = [
301
307
  0,
302
308
  MISS,
@@ -306,6 +312,7 @@ module P2p2
306
312
  ].pack( 'Q>CQ>Q>Q>' )
307
313
 
308
314
  send_pack( p1, ctlmsg, info[ :p2_addr ] )
315
+ pack_count += ( pack_id_end - pack_id_begin + 1 )
309
316
  end
310
317
  end
311
318
  when MISS
@@ -530,7 +537,7 @@ module P2p2
530
537
  end
531
538
  end
532
539
 
533
- # 若写后到达上限,暂停取写前
540
+ # 若写后达到上限,暂停取写前
534
541
  if info[ :shadow_exts ].map{ | _, ext | ext[ :wmems ].size }.sum >= WMEMS_LIMIT
535
542
  unless info[ :paused ]
536
543
  puts "pause #{ Time.new }"
@@ -314,8 +314,14 @@ module P2p2
314
314
  ranges << [ curr_pack_id, ext[ :biggest_shadow_pack_id ] ]
315
315
  end
316
316
 
317
+ pack_count = 0
317
318
  # puts "debug #{ ext[ :continue_shadow_pack_id ] }/#{ ext[ :biggest_shadow_pack_id ] } send MISS #{ ranges.size }"
318
319
  ranges.each do | pack_id_begin, pack_id_end |
320
+ if pack_count >= BREAK_SEND_MISS
321
+ puts "break send miss at #{ pack_id_begin } #{ Time.new }"
322
+ break
323
+ end
324
+
319
325
  ctlmsg = [
320
326
  0,
321
327
  MISS,
@@ -325,6 +331,7 @@ module P2p2
325
331
  ].pack( 'Q>CQ>Q>Q>' )
326
332
 
327
333
  send_pack( p2, ctlmsg, info[ :p1_addr ] )
334
+ pack_count += ( pack_id_end - pack_id_begin + 1 )
328
335
  end
329
336
  end
330
337
  when MISS
@@ -547,7 +554,7 @@ module P2p2
547
554
  end
548
555
  end
549
556
 
550
- # 若写后到达上限,暂停取写前
557
+ # 若写后达到上限,暂停取写前
551
558
  if info[ :app_exts ].map{ | _, ext | ext[ :wmems ].size }.sum >= WMEMS_LIMIT
552
559
  unless info[ :paused ]
553
560
  puts "pause #{ Time.new }"
@@ -1,3 +1,3 @@
1
1
  module P2p2
2
- VERSION = '0.14.0'.freeze
2
+ VERSION = '0.15.0'.freeze
3
3
  end
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.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - takafan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-03 00:00:00.000000000 Z
11
+ date: 2019-09-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 内网里的任意应用,访问另一个内网里的应用服务端。
14
14
  email: