nonnative 1.1.0 → 1.1.1

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: eca9151fff87535cc94a77e24cf243a3d0ed4203dc19c1d8bd5a6e31e604521e
4
- data.tar.gz: 4cf14cbb4df0dca0740406c1667742b171238ace67463f51387464cd5f2cf9cd
3
+ metadata.gz: 94fcc3a2a4b8de1151b3ddf4167a17f61cc37c76c5e13aa8f149d6bcf3936202
4
+ data.tar.gz: 11830a63386ff946a95dc43147002aa0ffd40a7905d67077f065d61d1b9bef1b
5
5
  SHA512:
6
- metadata.gz: 5b90f1d35bfbd4edb311a308d39d20711b3cf53b03101a554a088cac1719f6b53cc57f629f862dae4bd7063e8be5413b948edb5c952ee929ef971cdfce804d4b
7
- data.tar.gz: 2df440113fda404d2a140909b8d2b3ae5a37e6c50619f9a6a29e26d5f7cff4abaf84fe7f1e879d5f592d5a353a9281e2612a33c3c28a0227f7658f0153a0d5c6
6
+ metadata.gz: 390aca473034cbe91730e94a68e4ee20c7e1ace387fd4023f4cca947f7e1c1a4c00e9569fc3409b752d3ee6b2e5e44c058fd88cb4c20a29d9996daea01881bfa
7
+ data.tar.gz: b038c7d147f724fb8cf220e70eb1c08470d1c61980e304ea3283ac2eedbda628ae1a001bbb1427113b73c71c932b334b64bf38c3f5d27f876ae95e900d97c901
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nonnative (1.1.0)
4
+ nonnative (1.1.1)
5
5
  cucumber
6
6
  rspec-expectations
7
7
  semantic_logger
@@ -8,17 +8,11 @@ module Nonnative
8
8
  end
9
9
 
10
10
  def start(&block)
11
- prs = processes.map { |p, _| p.start }
12
- pos = processes.map { |_, p| Thread.new { p.open? } }.map(&:value)
13
-
14
- yield_results(prs, pos, &block)
11
+ process_all(:start, :open?, &block)
15
12
  end
16
13
 
17
14
  def stop(&block)
18
- prs = processes.map { |p, _| p.stop }
19
- pos = processes.map { |_, p| Thread.new { p.closed? } }.map(&:value)
20
-
21
- yield_results(prs, pos, &block)
15
+ process_all(:stop, :closed?, &block)
22
16
  end
23
17
 
24
18
  private
@@ -31,6 +25,22 @@ module Nonnative
31
25
  end
32
26
  end
33
27
 
28
+ def process_all(pr_method, po_method, &block)
29
+ prs = []
30
+ ths = []
31
+
32
+ processes.each do |pr, po|
33
+ prs << pr.send(pr_method)
34
+ ths << Thread.new { po.send(po_method) }
35
+ end
36
+
37
+ ThreadsWait.all_waits(*ths)
38
+
39
+ pos = ths.map(&:value)
40
+
41
+ yield_results(prs, pos, &block)
42
+ end
43
+
34
44
  def yield_results(prs, pos)
35
45
  prs.zip(pos).each do |pid, result|
36
46
  yield pid, result
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Nonnative
4
- VERSION = '1.1.0'
4
+ VERSION = '1.1.1'
5
5
  end
data/lib/nonnative.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'socket'
4
4
  require 'timeout'
5
+ require 'thwait'
5
6
  require 'yaml'
6
7
 
7
8
  require 'nonnative/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nonnative
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Falkowski