Class: Delayer::Procedure
- Inherits:
-
Object
- Object
- Delayer::Procedure
- Defined in:
- lib/delayer/procedure.rb
Instance Attribute Summary collapse
-
#delayer ⇒ Object
readonly
Returns the value of attribute delayer.
-
#next ⇒ Object
Returns the value of attribute next.
-
#state ⇒ Object
readonly
Returns the value of attribute state.
Instance Method Summary collapse
-
#break(node) ⇒ Object
insert node between self and self.next ==== Args [node] insertion ==== Return node.
-
#cancel ⇒ Object
- Cancel this job ==== Exception Delayer::TooLate
-
if already called run() ==== Return self.
-
#canceled? ⇒ Boolean
Return true if canceled this task ==== Return true if canceled this task.
-
#initialize(delayer, &proc) ⇒ Procedure
constructor
A new instance of Procedure.
-
#run ⇒ Object
- Run a process ==== Exception Delayer::TooLate
-
if already called run() ==== Return node.
Constructor Details
#initialize(delayer, &proc) ⇒ Procedure
Returns a new instance of Procedure.
7 8 9 10 11 12 13 |
# File 'lib/delayer/procedure.rb', line 7 def initialize(delayer, &proc) @delayer = delayer @proc = proc @state = :stop @next = nil @delayer.class.register(self) end |
Instance Attribute Details
#delayer ⇒ Object (readonly)
Returns the value of attribute delayer.
5 6 7 |
# File 'lib/delayer/procedure.rb', line 5 def delayer @delayer end |
#next ⇒ Object
Returns the value of attribute next.
6 7 8 |
# File 'lib/delayer/procedure.rb', line 6 def next @next end |
#state ⇒ Object (readonly)
Returns the value of attribute state.
5 6 7 |
# File 'lib/delayer/procedure.rb', line 5 def state @state end |
Instance Method Details
#break(node) ⇒ Object
insert node between self and self.next
Args
- node
-
insertion
Return
node
57 58 59 60 61 62 |
# File 'lib/delayer/procedure.rb', line 57 def break(node) tail = @next @next = node node.next = tail node end |
#cancel ⇒ Object
Cancel this job
Exception
- Delayer::TooLate
-
if already called run()
Return
self
36 37 38 39 40 41 42 43 |
# File 'lib/delayer/procedure.rb', line 36 def cancel unless @state == :stop raise Delayer::StateError(@state), 'cannot cancel Delayer::Procedure' end @state = :cancel self end |
#canceled? ⇒ Boolean
Return true if canceled this task
Return
true if canceled this task
48 49 50 |
# File 'lib/delayer/procedure.rb', line 48 def canceled? @state == :cancel end |
#run ⇒ Object
Run a process
Exception
- Delayer::TooLate
-
if already called run()
Return
node
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/delayer/procedure.rb', line 20 def run unless @state == :stop raise Delayer::StateError(@state), 'call twice Delayer::Procedure' end @state = :run @proc.call @state = :done @proc = nil end |