linedump 0.1.0 → 0.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
  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: