timers 4.3.5 → 4.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/timers/group.rb +4 -3
- data/lib/timers/priority_heap.rb +5 -4
- data/lib/timers/timer.rb +13 -13
- data/lib/timers/version.rb +1 -1
- data/lib/timers/wait.rb +2 -1
- data/license.md +4 -3
- data/readme.md +15 -5
- data.tar.gz.sig +0 -0
- metadata +16 -92
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '07298120c1d45f17c3494b356f3a7415da25406804f33d58fa8f2cfe430ca1c1'
|
4
|
+
data.tar.gz: '09d40256b9e64b66fcee87a2e8222f062a0fd600b3845ba9e0675e21c09e323c'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd660f745409c852fa6756983cb460e58143bda880332230669e9f49bdb197b7ea5593563f5526ee0d36c56f1aa89673afe14df27f0eda58f1c7a8fadd9b8947
|
7
|
+
data.tar.gz: ff2f6672fa7a6d8c561cd0933bd796b406d98fbc0250600abc4a04779be917f3ddf1205795b0b6455bde09d89ae224c25f3b37349cef5fbdf810ea6a9ec650d9
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/timers/group.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2014-
|
4
|
+
# Copyright, 2014-2025, by Samuel Williams.
|
5
5
|
# Copyright, 2014-2016, by Tony Arcieri.
|
6
6
|
# Copyright, 2015, by Donovan Keme.
|
7
7
|
# Copyright, 2015, by Tommy Ong Gia Phu.
|
@@ -92,8 +92,9 @@ module Timers
|
|
92
92
|
# - 0: timers ready to fire
|
93
93
|
# - +ve: timers waiting to fire
|
94
94
|
def wait_interval(offset = current_offset)
|
95
|
-
handle = @events.first
|
96
|
-
|
95
|
+
if handle = @events.first
|
96
|
+
handle.time - Float(offset)
|
97
|
+
end
|
97
98
|
end
|
98
99
|
|
99
100
|
# Fire all timers that are ready.
|
data/lib/timers/priority_heap.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2021, by Wander Hillen.
|
5
|
-
# Copyright, 2021-
|
5
|
+
# Copyright, 2021-2025, by Samuel Williams.
|
6
6
|
|
7
7
|
module Timers
|
8
8
|
# A priority queue implementation using a standard binary minheap. It uses straight comparison
|
@@ -84,9 +84,10 @@ module Timers
|
|
84
84
|
|
85
85
|
private
|
86
86
|
|
87
|
-
|
88
|
-
|
89
|
-
|
87
|
+
# Left here for reference, but unused.
|
88
|
+
# def swap(i, j)
|
89
|
+
# @contents[i], @contents[j] = @contents[j], @contents[i]
|
90
|
+
# end
|
90
91
|
|
91
92
|
def bubble_up(index)
|
92
93
|
parent_index = (index - 1) / 2 # watch out, integer division!
|
data/lib/timers/timer.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2014-
|
4
|
+
# Copyright, 2014-2025, by Samuel Williams.
|
5
5
|
# Copyright, 2014-2017, by Tony Arcieri.
|
6
6
|
# Copyright, 2014, by Utenmiki.
|
7
7
|
# Copyright, 2014, by Lin Jen-Shin.
|
8
8
|
# Copyright, 2017, by Vít Ondruch.
|
9
|
+
# Copyright, 2025, by Patrik Wenger.
|
9
10
|
|
10
11
|
module Timers
|
11
12
|
# An individual timer set to fire a given proc at a given time. A timer is
|
@@ -23,12 +24,11 @@ module Timers
|
|
23
24
|
@interval = interval
|
24
25
|
@recurring = recurring
|
25
26
|
@block = block
|
26
|
-
@offset =
|
27
|
-
|
27
|
+
@offset = nil
|
28
28
|
@handle = nil
|
29
29
|
|
30
30
|
# If a start offset was supplied, use that, otherwise use the current timers offset.
|
31
|
-
reset(
|
31
|
+
reset(offset || @group.current_offset)
|
32
32
|
end
|
33
33
|
|
34
34
|
def paused?
|
@@ -73,7 +73,7 @@ module Timers
|
|
73
73
|
@handle = nil
|
74
74
|
|
75
75
|
# This timer is no longer valid:
|
76
|
-
@group.timers.delete
|
76
|
+
@group.timers.delete(self) if @group
|
77
77
|
end
|
78
78
|
|
79
79
|
# Reset this timer. Do not call while paused.
|
@@ -103,9 +103,9 @@ module Timers
|
|
103
103
|
@offset = offset
|
104
104
|
end
|
105
105
|
|
106
|
-
@block.call(offset, self)
|
107
|
-
|
106
|
+
result = @block.call(offset, self)
|
108
107
|
cancel unless recurring
|
108
|
+
result
|
109
109
|
end
|
110
110
|
|
111
111
|
alias call fire
|
@@ -117,18 +117,18 @@ module Timers
|
|
117
117
|
|
118
118
|
# Inspect a timer
|
119
119
|
def inspect
|
120
|
-
buffer =
|
120
|
+
buffer = to_s[0..-2]
|
121
121
|
|
122
122
|
if @offset
|
123
|
-
|
124
|
-
|
123
|
+
delta_offset = @offset - @group.current_offset
|
124
|
+
|
125
|
+
if delta_offset > 0
|
126
|
+
buffer << " fires in #{delta_offset} seconds"
|
125
127
|
else
|
126
|
-
buffer << "fired #{
|
128
|
+
buffer << " fired #{delta_offset.abs} seconds ago"
|
127
129
|
end
|
128
130
|
|
129
131
|
buffer << ", recurs every #{interval}" if recurring
|
130
|
-
else
|
131
|
-
buffer << "dead"
|
132
132
|
end
|
133
133
|
|
134
134
|
buffer << ">"
|
data/lib/timers/version.rb
CHANGED
data/lib/timers/wait.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2014-
|
4
|
+
# Copyright, 2014-2025, by Samuel Williams.
|
5
5
|
# Copyright, 2014-2016, by Tony Arcieri.
|
6
6
|
# Copyright, 2015, by Utenmiki.
|
7
7
|
# Copyright, 2015, by Donovan Keme.
|
@@ -17,6 +17,7 @@ module Timers
|
|
17
17
|
|
18
18
|
timeout.while_time_remaining(&block)
|
19
19
|
else
|
20
|
+
# If there is no "duration" to wait for, we wait forever.
|
20
21
|
loop do
|
21
22
|
yield(nil)
|
22
23
|
end
|
data/license.md
CHANGED
@@ -12,7 +12,7 @@ Copyright, 2013-2015, by Utenmiki.
|
|
12
12
|
Copyright, 2013, by Jeremy Hinegardner.
|
13
13
|
Copyright, 2014, by Larry Lv.
|
14
14
|
Copyright, 2014, by Bruno Enten.
|
15
|
-
Copyright, 2014-
|
15
|
+
Copyright, 2014-2025, by Samuel Williams.
|
16
16
|
Copyright, 2014, by Mike Bourgeous.
|
17
17
|
Copyright, 2014, by Klaus Trainer.
|
18
18
|
Copyright, 2014, by Lin Jen-Shin.
|
@@ -20,14 +20,15 @@ Copyright, 2014, by Lavir the Whiolet.
|
|
20
20
|
Copyright, 2015-2016, by Donovan Keme.
|
21
21
|
Copyright, 2015, by Tommy Ong Gia Phu.
|
22
22
|
Copyright, 2015, by Will Jessop.
|
23
|
-
Copyright, 2016, by Ryunosuke
|
23
|
+
Copyright, 2016, by Ryunosuke Sato.
|
24
24
|
Copyright, 2016, by Atul Bhosale.
|
25
|
-
Copyright, 2016, by Feram.
|
26
25
|
Copyright, 2017, by Vít Ondruch.
|
27
26
|
Copyright, 2017-2020, by Olle Jonsson.
|
28
27
|
Copyright, 2020, by Tim Smith.
|
29
28
|
Copyright, 2021, by Wander Hillen.
|
30
29
|
Copyright, 2022, by Yoshiki Takagi.
|
30
|
+
Copyright, 2023, by Peter Goldstein.
|
31
|
+
Copyright, 2025, by Patrik Wenger.
|
31
32
|
|
32
33
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
33
34
|
of this software and associated documentation files (the "Software"), to deal
|
data/readme.md
CHANGED
@@ -103,8 +103,18 @@ timers.resume
|
|
103
103
|
|
104
104
|
## Contributing
|
105
105
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
106
|
+
We welcome contributions to this project.
|
107
|
+
|
108
|
+
1. Fork it.
|
109
|
+
2. Create your feature branch (`git checkout -b my-new-feature`).
|
110
|
+
3. Commit your changes (`git commit -am 'Add some feature'`).
|
111
|
+
4. Push to the branch (`git push origin my-new-feature`).
|
112
|
+
5. Create new Pull Request.
|
113
|
+
|
114
|
+
### Developer Certificate of Origin
|
115
|
+
|
116
|
+
In order to protect users of this project, we require all contributors to comply with the [Developer Certificate of Origin](https://developercertificate.org/). This ensures that all contributions are properly licensed and attributed.
|
117
|
+
|
118
|
+
### Community Guidelines
|
119
|
+
|
120
|
+
This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,41 +1,38 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Arcieri
|
8
8
|
- Samuel Williams
|
9
|
-
-
|
9
|
+
- Donovan Keme
|
10
10
|
- Wander Hillen
|
11
|
+
- Utenmiki
|
11
12
|
- Jeremy Hinegardner
|
12
|
-
-
|
13
|
+
- Sean Gregory
|
13
14
|
- Chuck Remes
|
14
|
-
- utenmiki
|
15
15
|
- Olle Jonsson
|
16
|
-
-
|
17
|
-
-
|
16
|
+
- Ron Evans
|
17
|
+
- Tommy Ong Gia Phu
|
18
18
|
- Larry Lv
|
19
19
|
- Lin Jen-Shin
|
20
|
-
- Ryunosuke
|
21
|
-
- Tommy Ong Gia Phu
|
20
|
+
- Ryunosuke Sato
|
22
21
|
- Atul Bhosale
|
23
22
|
- Bruno Enten
|
24
23
|
- Dimitrij Denissenko
|
25
|
-
- Donovan Keme
|
26
|
-
- Feram
|
27
24
|
- Jesse Cooke
|
28
25
|
- Klaus Trainer
|
29
26
|
- Lavir the Whiolet
|
30
27
|
- Mike Bourgeous
|
28
|
+
- Nicholas Evans
|
29
|
+
- Patrik Wenger
|
30
|
+
- Peter Goldstein
|
31
31
|
- Ryan LeCompte
|
32
32
|
- Tim Smith
|
33
33
|
- Vít Ondruch
|
34
34
|
- Will Jessop
|
35
35
|
- Yoshiki Takagi
|
36
|
-
- nicholas a. evans
|
37
|
-
- tommyogp
|
38
|
-
autorequire:
|
39
36
|
bindir: bin
|
40
37
|
cert_chain:
|
41
38
|
- |
|
@@ -67,80 +64,8 @@ cert_chain:
|
|
67
64
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
68
65
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
69
66
|
-----END CERTIFICATE-----
|
70
|
-
date:
|
71
|
-
dependencies:
|
72
|
-
- !ruby/object:Gem::Dependency
|
73
|
-
name: bundler
|
74
|
-
requirement: !ruby/object:Gem::Requirement
|
75
|
-
requirements:
|
76
|
-
- - ">="
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: '0'
|
79
|
-
type: :development
|
80
|
-
prerelease: false
|
81
|
-
version_requirements: !ruby/object:Gem::Requirement
|
82
|
-
requirements:
|
83
|
-
- - ">="
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
86
|
-
- !ruby/object:Gem::Dependency
|
87
|
-
name: covered
|
88
|
-
requirement: !ruby/object:Gem::Requirement
|
89
|
-
requirements:
|
90
|
-
- - ">="
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
version: '0'
|
93
|
-
type: :development
|
94
|
-
prerelease: false
|
95
|
-
version_requirements: !ruby/object:Gem::Requirement
|
96
|
-
requirements:
|
97
|
-
- - ">="
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: '0'
|
100
|
-
- !ruby/object:Gem::Dependency
|
101
|
-
name: bake-test
|
102
|
-
requirement: !ruby/object:Gem::Requirement
|
103
|
-
requirements:
|
104
|
-
- - "~>"
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
version: '0.1'
|
107
|
-
type: :development
|
108
|
-
prerelease: false
|
109
|
-
version_requirements: !ruby/object:Gem::Requirement
|
110
|
-
requirements:
|
111
|
-
- - "~>"
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: '0.1'
|
114
|
-
- !ruby/object:Gem::Dependency
|
115
|
-
name: bake-test-external
|
116
|
-
requirement: !ruby/object:Gem::Requirement
|
117
|
-
requirements:
|
118
|
-
- - "~>"
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: '0.2'
|
121
|
-
type: :development
|
122
|
-
prerelease: false
|
123
|
-
version_requirements: !ruby/object:Gem::Requirement
|
124
|
-
requirements:
|
125
|
-
- - "~>"
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
version: '0.2'
|
128
|
-
- !ruby/object:Gem::Dependency
|
129
|
-
name: sus
|
130
|
-
requirement: !ruby/object:Gem::Requirement
|
131
|
-
requirements:
|
132
|
-
- - "~>"
|
133
|
-
- !ruby/object:Gem::Version
|
134
|
-
version: '0.13'
|
135
|
-
type: :development
|
136
|
-
prerelease: false
|
137
|
-
version_requirements: !ruby/object:Gem::Requirement
|
138
|
-
requirements:
|
139
|
-
- - "~>"
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0.13'
|
142
|
-
description:
|
143
|
-
email:
|
67
|
+
date: 2025-02-07 00:00:00.000000000 Z
|
68
|
+
dependencies: []
|
144
69
|
executables: []
|
145
70
|
extensions: []
|
146
71
|
extra_rdoc_files: []
|
@@ -158,8 +83,8 @@ files:
|
|
158
83
|
homepage: https://github.com/socketry/timers
|
159
84
|
licenses:
|
160
85
|
- MIT
|
161
|
-
metadata:
|
162
|
-
|
86
|
+
metadata:
|
87
|
+
source_code_uri: https://github.com/socketry/timers.git
|
163
88
|
rdoc_options: []
|
164
89
|
require_paths:
|
165
90
|
- lib
|
@@ -167,15 +92,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
167
92
|
requirements:
|
168
93
|
- - ">="
|
169
94
|
- !ruby/object:Gem::Version
|
170
|
-
version: '
|
95
|
+
version: '3.1'
|
171
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
97
|
requirements:
|
173
98
|
- - ">="
|
174
99
|
- !ruby/object:Gem::Version
|
175
100
|
version: '0'
|
176
101
|
requirements: []
|
177
|
-
rubygems_version: 3.
|
178
|
-
signing_key:
|
102
|
+
rubygems_version: 3.6.2
|
179
103
|
specification_version: 4
|
180
104
|
summary: Pure Ruby one-shot and periodic timers.
|
181
105
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|