tmtms_timer 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -1
- data/README.md +2 -2
- data/lib/tmtms/timer.rb +27 -11
- data/lib/tmtms_timer/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7df92cefdc4388b0d077292793e1a4753c04a99d8028850d4cd8789af316c86d
|
4
|
+
data.tar.gz: dc09b781bb90b0bcd7042cc4864907bfc54e85437641c5b59282638b66d3501e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bbee610f65aac8c6914181fea649029a7ffafc95bb5aa194ead05f40824bd82cebef53408fa82edef2545d51e3b5567ac1d4c11c2faf42efc45fa1aed2a20a24
|
7
|
+
data.tar.gz: 425a26c113c2ada50378a6a8f92f5894e2c75ab1c6cd7e6484811488072cd34f49426125bd35e6e6d3edff13c497506a6abcfadca7f8a405fc6ac994803f9baf
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
data/lib/tmtms/timer.rb
CHANGED
@@ -7,41 +7,57 @@ module Tmtms
|
|
7
7
|
# t.set(1){puts "hoge"}
|
8
8
|
# sleep 5 # puts "hoge" after 1 second.
|
9
9
|
class Timer
|
10
|
-
Job
|
10
|
+
class Job
|
11
|
+
attr_reader :time, :block
|
12
|
+
|
13
|
+
# @param timer [Tmtms::Timer]
|
14
|
+
# @param time [Time]
|
15
|
+
# @param block [Proc]
|
16
|
+
def initialize(timer:, time:, block:)
|
17
|
+
@timer, @time, @block = timer, time, block
|
18
|
+
end
|
19
|
+
|
20
|
+
# cancel this job.
|
21
|
+
# @return [self]
|
22
|
+
def cancel
|
23
|
+
@timer.cancel(self)
|
24
|
+
end
|
25
|
+
end
|
11
26
|
|
12
27
|
def initialize
|
13
28
|
@rfd, @wfd = IO.pipe
|
14
29
|
@jobs = [] #=> [job, ...]
|
15
30
|
@mutex = Mutex.new
|
16
|
-
@id = 0
|
17
31
|
do_loop
|
18
32
|
end
|
19
33
|
|
20
34
|
# execute block after sec seconds.
|
21
35
|
# @param sec [Numeric]
|
22
|
-
# @return [
|
36
|
+
# @return [Tmtms::Timer::Job] timer job
|
23
37
|
def set(sec, &block)
|
24
38
|
at(Time.now + sec, &block)
|
25
39
|
end
|
26
40
|
|
27
41
|
# execute block at the specified time.
|
28
42
|
# @param time [Time]
|
29
|
-
# @return [
|
43
|
+
# @return [Tmtms::Timer::Job] timer job
|
30
44
|
def at(time, &block)
|
31
45
|
@mutex.synchronize do
|
32
|
-
|
33
|
-
@jobs.push
|
46
|
+
job = Job.new(timer: self, time: time, block: block)
|
47
|
+
@jobs.push job
|
34
48
|
@jobs.sort_by!(&:time)
|
49
|
+
@wfd.syswrite('.')
|
50
|
+
return job
|
35
51
|
end
|
36
|
-
@wfd.syswrite('.')
|
37
|
-
@id
|
38
52
|
end
|
39
53
|
|
40
54
|
# cancle the timer.
|
41
|
-
# @param
|
42
|
-
|
55
|
+
# @param job [Tmtms::Timer::Job] timer job
|
56
|
+
# @return [Tmtms::Timer::Job] if the job was available.
|
57
|
+
# @return [nil] if the job was not available.
|
58
|
+
def cancel(job)
|
43
59
|
@mutex.synchronize do
|
44
|
-
@jobs.
|
60
|
+
@jobs.delete(job)
|
45
61
|
end
|
46
62
|
end
|
47
63
|
|
data/lib/tmtms_timer/version.rb
CHANGED