Class: RubyRabbitmqJanus::Janus::Concurrencies::KeepaliveTimer
- Inherits:
-
Object
- Object
- RubyRabbitmqJanus::Janus::Concurrencies::KeepaliveTimer
- Defined in:
- lib/rrj/janus/processus/keepalive/keepalive_timer.rb
Overview
# Manage time for thread
Configure all timer used in keepalive class
Instance Attribute Summary collapse
-
#time_to_die ⇒ Integer
readonly
Time before timer stop it.
-
#time_to_live ⇒ Integer
readonly
Time for interval between keepalive message.
Instance Method Summary collapse
-
#initialize ⇒ KeepaliveTimer
constructor
Initialize timer to keeaplive thread.
-
#loop_keepalive(&block) ⇒ Object
Execute a loop with timer for sending keepalive message to Janus Instance.
-
#session(&block) ⇒ Object
Test if session is present/exist in Janus Instance.
-
#stop_timer ⇒ Object
Stop timer to keepalive thread.
Constructor Details
#initialize ⇒ KeepaliveTimer
Initialize timer to keeaplive thread.
25 26 27 28 29 30 31 32 |
# File 'lib/rrj/janus/processus/keepalive/keepalive_timer.rb', line 25 def initialize @time_to_live = Tools::Config.instance.ttl @time_to_die = test_time_to_die >= 60 ? 59 : test_time_to_die @timers = Timers::Group.new @timer = nil rescue raise Errors::Janus::KeepaliveTimer::Initializer end |
Instance Attribute Details
#time_to_die ⇒ Integer (readonly)
Returns Time before timer stop it.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/rrj/janus/processus/keepalive/keepalive_timer.rb', line 21 class KeepaliveTimer attr_reader :time_to_live, :time_to_die # Initialize timer to keeaplive thread. def initialize @time_to_live = Tools::Config.instance.ttl @time_to_die = test_time_to_die >= 60 ? 59 : test_time_to_die @timers = Timers::Group.new @timer = nil rescue raise Errors::Janus::KeepaliveTimer::Initializer end # Execute a loop with timer for sending keepalive message # to Janus Instance def loop_keepalive(&block) @timer = @timers.now_and_every(@time_to_live) { prepare_loop(&block) } loop { @timers.wait } rescue raise Errors::Janus::KeepaliveTimer::LoopKeepalive end # Test if session is present/exist in Janus Instance def session(&block) Timeout.timeout(@time_to_die) { yield } rescue Timeout::Error block.binding.receiver.instance_is_down rescue raise Errors::Janus::KeepaliveTimer::Session end # Stop timer to keepalive thread def stop_timer @timer.cancel @timer = nil rescue raise Errors::Janus::KeepaliveTimer::StopTimer end private # :reek:FeatureEnvy def prepare_loop(&block) Timeout.timeout(@time_to_die) do block.binding.receiver.restart_session if yield end rescue Timeout::Error block.binding.receiver.instance_is_down end def test_time_to_die @time_to_live + 5 end end |
#time_to_live ⇒ Integer (readonly)
Returns Time for interval between keepalive message.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/rrj/janus/processus/keepalive/keepalive_timer.rb', line 21 class KeepaliveTimer attr_reader :time_to_live, :time_to_die # Initialize timer to keeaplive thread. def initialize @time_to_live = Tools::Config.instance.ttl @time_to_die = test_time_to_die >= 60 ? 59 : test_time_to_die @timers = Timers::Group.new @timer = nil rescue raise Errors::Janus::KeepaliveTimer::Initializer end # Execute a loop with timer for sending keepalive message # to Janus Instance def loop_keepalive(&block) @timer = @timers.now_and_every(@time_to_live) { prepare_loop(&block) } loop { @timers.wait } rescue raise Errors::Janus::KeepaliveTimer::LoopKeepalive end # Test if session is present/exist in Janus Instance def session(&block) Timeout.timeout(@time_to_die) { yield } rescue Timeout::Error block.binding.receiver.instance_is_down rescue raise Errors::Janus::KeepaliveTimer::Session end # Stop timer to keepalive thread def stop_timer @timer.cancel @timer = nil rescue raise Errors::Janus::KeepaliveTimer::StopTimer end private # :reek:FeatureEnvy def prepare_loop(&block) Timeout.timeout(@time_to_die) do block.binding.receiver.restart_session if yield end rescue Timeout::Error block.binding.receiver.instance_is_down end def test_time_to_die @time_to_live + 5 end end |
Instance Method Details
#loop_keepalive(&block) ⇒ Object
Execute a loop with timer for sending keepalive message to Janus Instance
36 37 38 39 40 41 |
# File 'lib/rrj/janus/processus/keepalive/keepalive_timer.rb', line 36 def loop_keepalive(&block) @timer = @timers.now_and_every(@time_to_live) { prepare_loop(&block) } loop { @timers.wait } rescue raise Errors::Janus::KeepaliveTimer::LoopKeepalive end |
#session(&block) ⇒ Object
Test if session is present/exist in Janus Instance
44 45 46 47 48 49 50 |
# File 'lib/rrj/janus/processus/keepalive/keepalive_timer.rb', line 44 def session(&block) Timeout.timeout(@time_to_die) { yield } rescue Timeout::Error block.binding.receiver.instance_is_down rescue raise Errors::Janus::KeepaliveTimer::Session end |
#stop_timer ⇒ Object
Stop timer to keepalive thread
53 54 55 56 57 58 |
# File 'lib/rrj/janus/processus/keepalive/keepalive_timer.rb', line 53 def stop_timer @timer.cancel @timer = nil rescue raise Errors::Janus::KeepaliveTimer::StopTimer end |