rb-inotify 0.1.0 → 0.2.0
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.
- data/.gitignore +1 -0
- data/VERSION +1 -1
- data/lib/rb-inotify/event.rb +16 -7
- data/lib/rb-inotify/notifier.rb +14 -1
- data/rb-inotify.gemspec +51 -0
- metadata +2 -1
data/.gitignore
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/rb-inotify/event.rb
CHANGED
@@ -3,14 +3,12 @@ module INotify
|
|
3
3
|
# Each {Watcher} can fire many events,
|
4
4
|
# which are passed to that watcher's callback.
|
5
5
|
class Event
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
# Currently, this is only used for files that are moved within the same directory.
|
10
|
-
# Both the `:moved_from` and the `:moved_to` events will have the same cookie.
|
6
|
+
# A list of other events that are related to this one.
|
7
|
+
# Currently, this is only used for files that are moved within the same directory:
|
8
|
+
# the `:moved_from` and the `:moved_to` events will be related.
|
11
9
|
#
|
12
|
-
# @return [
|
13
|
-
attr_reader :
|
10
|
+
# @return [Array<Event>]
|
11
|
+
attr_reader :related
|
14
12
|
|
15
13
|
# The name of the file that the event occurred on.
|
16
14
|
# This is only set for events that occur on files in directories;
|
@@ -24,6 +22,16 @@ module INotify
|
|
24
22
|
# @return [Notifier]
|
25
23
|
attr_reader :notifier
|
26
24
|
|
25
|
+
# An integer specifying that this event is related to some other event,
|
26
|
+
# which will have the same cookie.
|
27
|
+
#
|
28
|
+
# Currently, this is only used for files that are moved within the same directory.
|
29
|
+
# Both the `:moved_from` and the `:moved_to` events will have the same cookie.
|
30
|
+
#
|
31
|
+
# @private
|
32
|
+
# @return [Fixnum]
|
33
|
+
attr_reader :cookie
|
34
|
+
|
27
35
|
# The {Watcher#id id} of the {Watcher} that fired this event.
|
28
36
|
#
|
29
37
|
# @private
|
@@ -80,6 +88,7 @@ module INotify
|
|
80
88
|
def initialize(data, notifier)
|
81
89
|
ptr = FFI::MemoryPointer.from_string(data)
|
82
90
|
@native = Native::Event.new(ptr)
|
91
|
+
@related = []
|
83
92
|
@cookie = @native[:cookie]
|
84
93
|
@name = data[@native.size, @native[:len]].gsub(/\0+$/, '')
|
85
94
|
@notifier = notifier
|
data/lib/rb-inotify/notifier.rb
CHANGED
@@ -152,7 +152,15 @@ module INotify
|
|
152
152
|
#
|
153
153
|
# @see #process
|
154
154
|
def run
|
155
|
-
|
155
|
+
@stop = false
|
156
|
+
process until @stop || closed?
|
157
|
+
end
|
158
|
+
|
159
|
+
# Stop watching for filesystem events.
|
160
|
+
# That is, if we're in a \{#run} loop,
|
161
|
+
# exit out as soon as we finish handling the events.
|
162
|
+
def stop
|
163
|
+
@stop = true
|
156
164
|
end
|
157
165
|
|
158
166
|
# Blocks until there are one or more filesystem events
|
@@ -186,9 +194,14 @@ module INotify
|
|
186
194
|
end
|
187
195
|
|
188
196
|
events = []
|
197
|
+
cookies = {}
|
189
198
|
while ev = Event.consume(data, self)
|
190
199
|
events << ev
|
200
|
+
next if ev.cookie == 0
|
201
|
+
cookies[ev.cookie] ||= []
|
202
|
+
cookies[ev.cookie] << ev
|
191
203
|
end
|
204
|
+
cookies.each {|c, evs| evs.each {|ev| ev.related.replace(evs - [ev]).freeze}}
|
192
205
|
events
|
193
206
|
end
|
194
207
|
end
|
data/rb-inotify.gemspec
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{rb-inotify}
|
8
|
+
s.version = "0.2.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Nathan Weizenbaum"]
|
12
|
+
s.date = %q{2009-11-29}
|
13
|
+
s.description = %q{A Ruby wrapper for Linux's inotify, using FFI}
|
14
|
+
s.email = %q{nex342@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.md"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".gitignore",
|
20
|
+
".yardopts",
|
21
|
+
"MIT-LICENSE",
|
22
|
+
"README.md",
|
23
|
+
"Rakefile",
|
24
|
+
"VERSION",
|
25
|
+
"lib/rb-inotify.rb",
|
26
|
+
"lib/rb-inotify/event.rb",
|
27
|
+
"lib/rb-inotify/native.rb",
|
28
|
+
"lib/rb-inotify/native/flags.rb",
|
29
|
+
"lib/rb-inotify/notifier.rb",
|
30
|
+
"lib/rb-inotify/watcher.rb",
|
31
|
+
"rb-inotify.gemspec"
|
32
|
+
]
|
33
|
+
s.homepage = %q{http://github.com/nex3/rb-notify}
|
34
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
35
|
+
s.require_paths = ["lib"]
|
36
|
+
s.rubygems_version = %q{1.3.5}
|
37
|
+
s.summary = %q{A Ruby wrapper for Linux's inotify, using FFI}
|
38
|
+
|
39
|
+
if s.respond_to? :specification_version then
|
40
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
41
|
+
s.specification_version = 3
|
42
|
+
|
43
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
44
|
+
s.add_development_dependency(%q<yard>, [">= 0"])
|
45
|
+
else
|
46
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
47
|
+
end
|
48
|
+
else
|
49
|
+
s.add_dependency(%q<yard>, [">= 0"])
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rb-inotify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Weizenbaum
|
@@ -43,6 +43,7 @@ files:
|
|
43
43
|
- lib/rb-inotify/native/flags.rb
|
44
44
|
- lib/rb-inotify/notifier.rb
|
45
45
|
- lib/rb-inotify/watcher.rb
|
46
|
+
- rb-inotify.gemspec
|
46
47
|
has_rdoc: true
|
47
48
|
homepage: http://github.com/nex3/rb-notify
|
48
49
|
licenses: []
|