linedump 0.1.0 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e4178abce450d405b7d4aaa896396dc7cb4adc2
4
- data.tar.gz: 785a239c2e41e6ff3b0cd3d683fcdad1ef1489b8
3
+ metadata.gz: 47d99657aaa2bffd05ddf2b3d5c28fd451fecde2
4
+ data.tar.gz: 1b1521d831fc0b8feccb5576c6dd914c0184e8e9
5
5
  SHA512:
6
- metadata.gz: 6c43e82bc03b8109687e5a4c47f57b666a5da1598cf0854a4bb03e607f1e3c6e31874346f3d7bf9e9d720fa330ae42f1e67bbff43e57a063a4a4265c30374782
7
- data.tar.gz: 3ddd976ec104f39325fd7208ae5cb87b45b7156276c31df3ef656b6565d7f7521fbd74096c7b7a4dbbe0276b4b4669b3d1844876da2e8a21f3cb5d59282cd453
6
+ metadata.gz: e2fe60783ac00dbfb495c180e4030cd4e757461cf99077c5623822d445389630f1110f2fa05a02c17cb51d8e390dd368bca61591e3474989725adfee64389585
7
+ data.tar.gz: e7224adde07d0d8d130c37de1e9eb32d7048f57f43c27aaf7312d43e6d425ff9b0ef684bacda011bb41033ad84a5cb82fd0a4bb2a101505440c45e8f87f5de0c
@@ -17,7 +17,7 @@ module Linedump
17
17
 
18
18
  def register_stream(_stream, &_block)
19
19
  # TODO: locking for non-GIL platforms
20
- @streams << StreamWrapper.new(_stream, _block)
20
+ streams << StreamWrapper.new(_stream, _block)
21
21
  end
22
22
 
23
23
  def is_registered?(_stream)
@@ -44,18 +44,18 @@ module Linedump
44
44
 
45
45
  private
46
46
 
47
+ attr_reader :streams
48
+
47
49
  def load_worker
48
50
  Thread.new do
49
- looped = 0
50
51
  begin
51
- while @streams.count > 0
52
+ while ensure_open_streams
52
53
  read_streams = load_monitored_streams
53
54
  result = IO.select(read_streams, [], read_streams)
54
55
  if result
55
56
  process_ready_streams result[0]
56
57
  discard_errored_streams result[2]
57
58
  end
58
- looped += 1
59
59
  end
60
60
  rescue ReloadSignal
61
61
  retry
@@ -83,17 +83,23 @@ module Linedump
83
83
  end
84
84
 
85
85
  def find_stream_wrapper(_stream)
86
- @streams.find { |s| s.stream == _stream }
86
+ streams.find { |s| s.stream == _stream }
87
87
  end
88
88
 
89
89
  def remove_wrapper(_wrapper, _reason)
90
90
  # TODO: locking for non-GIL platforms
91
- @streams.delete _wrapper
91
+ _wrapper.stream.close
92
+ streams.delete _wrapper
93
+ end
94
+
95
+ def ensure_open_streams
96
+ streams.delete_if { |w| w.stream.closed? }
97
+ !streams.empty?
92
98
  end
93
99
 
94
100
  def load_monitored_streams
95
101
  # include stdin to prevent console enabled apps from locking
96
- @streams.map(&:stream) << $stdin
102
+ streams.map(&:stream) << $stdin
97
103
  end
98
104
 
99
105
  end
@@ -1,3 +1,3 @@
1
1
  module Linedump
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linedump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignacio Baixas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-25 00:00:00.000000000 Z
11
+ date: 2016-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -146,8 +146,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
146
  version: '0'
147
147
  requirements: []
148
148
  rubyforge_project:
149
- rubygems_version: 2.4.5
149
+ rubygems_version: 2.6.2
150
150
  signing_key:
151
151
  specification_version: 4
152
152
  summary: Process output stream listener helper
153
153
  test_files: []
154
+ has_rdoc: