carnivore-files 0.3.2-java → 0.5.0-java

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: 0b34e27ea2d128c135eb763cf09bf6a33e84dc00
4
- data.tar.gz: f90e47619a405bacb036eb1de9ce10782c74a649
3
+ metadata.gz: 36021a5eb3149186d4a24b255aa786bb03ad8af6
4
+ data.tar.gz: 30c76d4a1e0db3149b0c874404b8a2a83f48b67c
5
5
  SHA512:
6
- metadata.gz: 97b799f9dd19d4860dc114aa00c372479e87264c4fda069f6c13eab97937020c9d088484032cc755b4c52921ddd94a02e5f0ba2d63dc7a4ad87e1e640afde127
7
- data.tar.gz: 59a8cbcd38895437341d1d99cce5bb3334cb35a3c085a52e39172ecf9adccc49623b772996c92814d4e10fbd6ef55357a726549d0489950841ebeab2d826d167
6
+ metadata.gz: 6a14f707b7ec20453e2bd9d1088a5de96d66ce7da628229b94587f00983d828346590e7d50282941c7f17239f1fefc9dd749513de54ee1e39b2c0ac41d771da4
7
+ data.tar.gz: 1ca9d397965ded62770a8019b030105e63647e0febfa21979c7fa609ab0aa3934bbb5955ba19b0435e10a44321b15498be8e5d531dd1c4b23bbdb46dab788ef2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # v0.5.0
2
+ * Update to latest carnivore
3
+ * Refactor implementations
4
+
1
5
  # v0.3.2
2
6
  * Reset position prior to read
3
7
 
@@ -10,8 +10,8 @@ spec = Gem::Specification.new do |s|
10
10
  s.description = 'Carnivore file source'
11
11
  s.license = 'Apache 2.0'
12
12
  s.require_path = 'lib'
13
- s.add_runtime_dependency 'carnivore', '>= 0.1.8'
14
- s.add_runtime_dependency 'sleepy_penguin'
13
+ s.add_runtime_dependency 'carnivore', '>= 1.0.0', '< 2.0.0'
14
+ s.add_runtime_dependency 'sleepy_penguin', '~> 3.4'
15
15
  s.add_development_dependency 'pry'
16
16
  s.files = Dir['{lib}/**/**/*'] + %w(carnivore-files.gemspec README.md CHANGELOG.md)
17
17
  end
@@ -9,18 +9,17 @@ module Carnivore
9
9
  attr_reader :path
10
10
  # @return [Symbol] registry name of fetcher
11
11
  attr_reader :fetcher
12
-
13
- trap_exit :fetcher_failure
14
- finalizer :fetcher_destroyer
12
+ # @return [Queue] queue to hold messages
13
+ attr_reader :message_queue
15
14
 
16
15
  # Setup source
17
16
  #
18
17
  # @param args [Hash]
19
18
  # @option args [String] :path path to file
20
19
  # @option args [Symbol] :foundation underlying file interaction library
21
- # @option args [Celluloid::Actor] :notify_actor actor to notify on line receive
22
20
  def setup(*_)
23
21
  @path = ::File.expand_path(args[:path])
22
+ @message_queue = Queue.new
24
23
  unless(args[:foundation])
25
24
  args[:foundation] = RUBY_PLATFORM == 'java' ? :poll : :penguin
26
25
  end
@@ -28,37 +27,18 @@ module Carnivore
28
27
 
29
28
  # Start the line fetcher
30
29
  def connect
31
- @fetcher_name = "log_fetcher_#{name}".to_sym
32
30
  case args[:foundation].to_sym
33
31
  when :poll
34
- @fetcher = Carnivore::Files::Util::Fetcher::Poll.new(args)
32
+ @fetcher = Carnivore::Files::Util::Fetcher::Poll.new(args.merge(:queue => message_queue))
35
33
  else
36
- @fetcher = Carnivore::Files::Util::Fetcher::Penguin.new(args)
34
+ @fetcher = Carnivore::Files::Util::Fetcher::Penguin.new(args.merge(:queue => message_queue))
37
35
  end
38
- self.link fetcher
39
36
  fetcher.async.start_fetcher
40
37
  end
41
38
 
42
- # Restart file collector if unexpectedly failed
43
- #
44
- # @param object [Actor] crashed actor
45
- # @param reason [Exception, NilClass]
46
- def fetcher_failure(object, reason)
47
- if(reason && object == fetcher)
48
- error "File message collector unexpectedly failed: #{reason} (restarting)"
49
- connect
50
- end
51
- end
52
-
53
- def fetcher_destroyer
54
- if(fetcher && fetcher.alive?)
55
- fetcher.terminate
56
- end
57
- end
58
-
59
39
  # @return [Array<Hash>] return messages
60
- def receive(*args)
61
- format_message(Celluloid::Future.new{ fetcher.messages.pop }.value)
40
+ def receive(*_)
41
+ defer{ message_queue.pop }
62
42
  end
63
43
 
64
44
  # Send payload
@@ -10,7 +10,8 @@ module Carnivore
10
10
  autoload :Poll, 'carnivore-files/util/poll'
11
11
  autoload :Penguin, 'carnivore-files/util/penguin'
12
12
 
13
- include Celluloid
13
+ include Zoidberg::SoftShell
14
+ include Zoidberg::Supervise
14
15
  include Carnivore::Utils::Logging
15
16
 
16
17
  # @return [String] path to file
@@ -28,12 +29,11 @@ module Carnivore
28
29
  # @param args [Hash] initialization args
29
30
  # @option args [String] :path path to file
30
31
  # @option args [String] :delimiter string delimiter to break messages
31
- # @option args [Celluloid::Actor] :notify_actor actor to be notified on new messages
32
32
  def initialize(args={})
33
33
  @leftover = ''
34
34
  @path = ::File.expand_path(args[:path])
35
35
  @delimiter = args.fetch(:delimiter, "\n")
36
- @messages = Queue.new
36
+ @messages = args.fetch(:queue, Queue.new)
37
37
  end
38
38
 
39
39
  # Start the line fetcher
@@ -57,10 +57,9 @@ module Carnivore
57
57
  def retrieve_lines
58
58
  if(io)
59
59
  io.pos = @history_pos if @history_pos
60
- data = io.read(4096)
60
+ @leftover << io.read(4096).to_s
61
61
  while(data = io.read(4096))
62
- @leftover << data
63
- data = io.read(4096)
62
+ @leftover << data.to_s
64
63
  end
65
64
  @history_pos = io.pos
66
65
  result = @leftover.split(delimiter)
@@ -77,6 +76,7 @@ module Carnivore
77
76
  def build_io
78
77
  unless(io)
79
78
  if(::File.exists?(path))
79
+ @history_pos = 0
80
80
  @io = ::File.open(path, 'r')
81
81
  unless(@waited)
82
82
  @io.seek(0, ::IO::SEEK_END) # fast-forward to EOF
@@ -5,7 +5,6 @@ module Carnivore
5
5
  module Util
6
6
  class Fetcher
7
7
 
8
-
9
8
  # NIO based fetcher
10
9
  class Penguin < Fetcher
11
10
  # @return [SP::Inotify]
@@ -27,7 +26,7 @@ module Carnivore
27
26
  loop do
28
27
  build_io
29
28
  notify.each do |event|
30
- Celluloid::Future.new{ event.events }.value.each do |ev|
29
+ defer{ event.events }.each do |ev|
31
30
  case ev
32
31
  when :MODIFY
33
32
  retrieve_lines.each do |l|
@@ -47,7 +46,6 @@ module Carnivore
47
46
  end
48
47
  end
49
48
 
50
-
51
49
  private
52
50
 
53
51
  # Build the IO and monitor
@@ -84,7 +82,7 @@ module Carnivore
84
82
  notify_descriptors[:file_wait] = notify.add_watch(directory, :OPEN)
85
83
  until(notified)
86
84
  warn "Waiting for file to appear (#{path})"
87
- event = Celluloid::Future.new{ notify.take }.value
85
+ event = defer{ notify.take }
88
86
  notified = ::File.exists?(path)
89
87
  end
90
88
  notify.rm_watch(notify_descriptors.delete(:file_wait))
@@ -1,6 +1,6 @@
1
1
  module Carnivore
2
2
  module Files
3
3
  # Current version of library
4
- VERSION = Gem::Version.new('0.3.2')
4
+ VERSION = Gem::Version.new('0.5.0')
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carnivore-files
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.5.0
5
5
  platform: java
6
6
  authors:
7
7
  - Chris Roberts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-01 00:00:00.000000000 Z
11
+ date: 2015-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: carnivore
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.8
19
+ version: 1.0.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: 0.1.8
29
+ version: 1.0.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 2.0.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: pry
29
35
  requirement: !ruby/object:Gem::Requirement