Add hooks that get called when the polling mechanism starts or ends.
This commit is contained in:
parent
806d8db44c
commit
bfda135c19
|
@ -18,6 +18,8 @@ module Telepathy
|
|||
@last_update_id = nil
|
||||
@command_hooks = {} of String => Update, Array(String) -> Void
|
||||
@message_hooks = [] of Update -> Void
|
||||
@poll_start_hooks = [] of -> Void
|
||||
@poll_end_hooks = [] of -> Void
|
||||
@poll_channel = Channel(Int64?|Control).new
|
||||
@update_channel = Channel(Array(Update)|Control).new
|
||||
@poll_running = false
|
||||
|
@ -102,6 +104,14 @@ module Telepathy
|
|||
@message_hooks.push(block)
|
||||
end
|
||||
|
||||
def poll_start(&block: -> Void)
|
||||
@poll_start_hooks.push(block);
|
||||
end
|
||||
|
||||
def poll_end(&block: -> Void)
|
||||
@poll_end_hooks.push(block);
|
||||
end
|
||||
|
||||
private def process_updates(updates)
|
||||
updates.each do |update|
|
||||
if message = update.message
|
||||
|
@ -154,6 +164,7 @@ module Telepathy
|
|||
@poll_running = true
|
||||
spawn_workers
|
||||
@poll_channel.send nil
|
||||
@poll_start_hooks.each &.call
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -161,6 +172,7 @@ module Telepathy
|
|||
if @poll_running
|
||||
@poll_running = false
|
||||
@poll_channel.send Control::Done
|
||||
@poll_end_hooks.each &.call
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue
Block a user