gnomon 0.1.4 → 0.1.5

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/gnomon.rb +38 -0
  3. data/lib/gnomon/version.rb +1 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d6ac6a22cc7a52bc3b6a2c383c1e2344d44d454
4
- data.tar.gz: 045af89d5a19b62c645ad48b1ca4712d67dab9a6
3
+ metadata.gz: b469cb0fddada2cb893d4139ce126ea9e5aa143d
4
+ data.tar.gz: e697d7b0d9f83b3dd2bdee5f40739f7e681428fa
5
5
  SHA512:
6
- metadata.gz: be8b7c47100ecdd3933f0b1039d7b25660d56fb5d6863f2739454d54c3d9edcbed443e0f5d6953c9784273b755fe37271ad7642d675d271663d74991b0d1f866
7
- data.tar.gz: 66876c4b85a48ad4fefcba1a228aac04e7ad504f1fe9c7415e4a1cbc9abeb4893757bdb90f09359d025c7b6c9e222ef13a1b0c621645b70b0e58fbf8a27d8817
6
+ metadata.gz: 6c9070fff89e68b8fa340e9857caf08ffdab3516bb53a108a4c06be4484c77b02e1bd24e5a2e85be27967e9a5f591a88463df8f23b0b195c3266d21db461e782
7
+ data.tar.gz: 962f27e6d37f823e187d767dc533f64a5474582269745bc3508f947dc799ea06525b19463417e66d6afc1fef54888fe4d88b8e6616ffee1330491643612ea778
data/lib/gnomon.rb CHANGED
@@ -20,6 +20,8 @@ class Gnomon
20
20
  DEFAULT_GRANULARITY = 1
21
21
 
22
22
  # Construct
23
+ # Creates a new Gnomon instance
24
+ # @param [Float] granularity The desired resolution of the event queue, in seconds
23
25
  def initialize granularity = DEFAULT_GRANULARITY
24
26
 
25
27
  # Set Granularity
@@ -36,6 +38,13 @@ class Gnomon
36
38
  end
37
39
 
38
40
  # Schedule Event
41
+ # Schedules a generic event
42
+ # @param [Object] id An ID for later de-scheduling of this event
43
+ # @param [Symbol] mode The mode of scheduling - can be any of [ :at, :in, :every ]
44
+ # @param [Hash] mode_options Mode-specific options hash - See documentation for desired mode
45
+ # @param [Object] timespec Mode-specific time-specification for 'when' to trigger the event
46
+ # @param [Object] args Arguments to be passed as-is to the event's block upon execution
47
+ # @param [Object] block A block to be executed upon event trigger
39
48
  def schedule id, mode, mode_options, timespec, *args, &block
40
49
 
41
50
  # Synchronize
@@ -60,21 +69,40 @@ class Gnomon
60
69
  end
61
70
 
62
71
  # Schedule Event at a given date/time
72
+ # Shortcut to schedule an event to be triggered once at a specific date/time
73
+ # @param [Object] id
74
+ # @param [String] date_time A date / time string
75
+ # @param [Object] args
76
+ # @param [Object] block
63
77
  def schedule_at id, date_time, *args, &block
64
78
  schedule id, :at, {}, date_time, *args, &block
65
79
  end
66
80
 
67
81
  # Schedule Event in a given number of seconds
82
+ # Shortcut to schedule an event to be triggered once after a given amount of time
83
+ # @param [Object] id
84
+ # @param [Float] time
85
+ # @param [Object] args
86
+ # @param [Object] block
68
87
  def schedule_in id, time, *args, &block
69
88
  schedule id, :in, {}, time, *args, &block
70
89
  end
71
90
 
72
91
  # Schedule Event at a given interval (seconds)
92
+ # Shortcut to schedule an event to be triggered periodically at a given time interval
93
+ # @param [Object] id
94
+ # @param [Float] interval
95
+ # @param [boolean] async When true, schedule the next trigger before actually running the event's block - otherwise, schedule the next trigger only once the event block completes
96
+ # @param [Object] args
97
+ # @param [Object] block
73
98
  def schedule_every id, interval, async, *args, &block
74
99
  schedule id, :every, { async: async }, interval, *args, &block
75
100
  end
76
101
 
77
102
  # De-schedule
103
+ # Removes one or more previously-scheduled events from the scheduler
104
+ # @param [Object] id The ID of the event(s) to remove (all events with this ID will be removed)
105
+ # @param [Object] keep_running When true, the next trigger is maintained
78
106
  def deschedule id, keep_running = false
79
107
 
80
108
  # Synchronize
@@ -93,6 +121,8 @@ class Gnomon
93
121
  private
94
122
 
95
123
  # Enqueue Next Run
124
+ # Registers the next run for a given event into the event queue
125
+ # @param [Hash] event
96
126
  def enqueue_next_run event
97
127
  next_run = next_run event[:mode], event[:ts]
98
128
  pos = @equeue.index { |p| p[:next_run] >= next_run } || 0
@@ -100,6 +130,10 @@ class Gnomon
100
130
  end
101
131
 
102
132
  # Determine Next Run
133
+ # Determines when to trigger the next run for a given event
134
+ # @param [Symbol] mode
135
+ # @param [Object] ts
136
+ # @return [Float] A floating-point timestamp representing the time at which to trigger the next run
103
137
  def next_run mode, ts
104
138
  case mode
105
139
  when :at
@@ -112,11 +146,13 @@ class Gnomon
112
146
  end
113
147
 
114
148
  # Run
149
+ # Main Loop
115
150
  def run
116
151
  update until @stop
117
152
  end
118
153
 
119
154
  # Update
155
+ # Update Gnomon's internal states
120
156
  def update
121
157
 
122
158
  # Synchronize { Trigger Next Event in Queue }
@@ -127,6 +163,8 @@ class Gnomon
127
163
  end
128
164
 
129
165
  # Trigger Event
166
+ # Triggers an event, executing its block and re-scheduling the next run when appropriate
167
+ # @param [Hash] event
130
168
  def trigger event
131
169
 
132
170
  # Spawn Thread around Event's Block
@@ -5,5 +5,5 @@
5
5
  class Gnomon
6
6
 
7
7
  # Version
8
- VERSION = '0.1.4'
8
+ VERSION = '0.1.5'
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gnomon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eresse