module FartProbe
FartProbe ? fart command lag/user ping probe state. Public: register_pending, record_lag!, record_user_pong!, record_user_ctcp_ping!, timeout_pending, take_pending Depends: IrcUserPing Tests: test/lib/fart_probe_test.rb, test/plugins/fart_test.rb
Public Instance Methods
Source
# File lib/fart_probe.rb, line 71 def complete_pending(token, pending, store:) return nil unless ready?(pending) take_pending(token, store: store) end
Source
# File lib/fart_probe.rb, line 77 def merge_user_ping_result(result, store:) token = result[:context] pending = store[token] return nil unless pending pending[:ping_ms] = result[:ms] complete_pending(token, pending, store: store) end
Source
# File lib/fart_probe.rb, line 17 def pending_store @pending_store ||= {} end
Source
# File lib/fart_probe.rb, line 67 def ready?(pending) !pending[:lag_ms].nil? && !pending[:ping_ms].nil? end
Source
# File lib/fart_probe.rb, line 37 def record_lag!(token, received_at:, lag_from_probe:, store: pending_store) pending = store[token] return nil unless pending pending[:lag_ms] = lag_from_probe.call(sent_at: pending[:sent_at], received_at: received_at) complete_pending(token, pending, store: store) end
Source
# File lib/fart_probe.rb, line 52 def record_user_ctcp_ping!(nick:, args:, received_at:, store: pending_store) result = IrcUserPing.record_reply!(nick: nick, args: args, received_at: received_at) return nil unless result merge_user_ping_result(result, store: store) end
Source
# File lib/fart_probe.rb, line 45 def record_user_pong!(params, received_at:, store: pending_store) result = IrcUserPing.record_pong_reply!(params: params, received_at: received_at) return nil unless result merge_user_ping_result(result, store: store) end
Source
# File lib/fart_probe.rb, line 21 def register_pending(token, response_word:, sent_at:, nick:, message: nil, server: nil, store: pending_store) store[token] = { response_word: response_word, sent_at: sent_at, nick: nick, message: message, server: server, lag_ms: nil, ping_ms: nil } end
Source
# File lib/fart_probe.rb, line 13 def reset!(store: {}) @pending_store = store end
Source
# File lib/fart_probe.rb, line 33 def take_pending(token, store: pending_store) store.delete(token) end
Source
# File lib/fart_probe.rb, line 59 def timeout_pending(token, received_at:, lag_from_probe:, store: pending_store) pending = store[token] return nil unless pending pending[:lag_ms] ||= lag_from_probe.call(sent_at: pending[:sent_at], received_at: received_at) take_pending(token, store: store) end