Sha256: b5d750505796f3bdf6bb52a37440ee01b535b56101a249f53654961cdd9db4ad
Contents?: true
Size: 1.2 KB
Versions: 5
Compression:
Stored size: 1.2 KB
Contents
require "socket" require "timeout" module Bowline module Desktop module Network extend Bowline::Watcher::Base watch :on_online, :on_offline, :on_change def online! return if @online @online = true watcher.call(:on_online) watcher.call(:on_change) end def offline! return if @online == false @online = false watcher.call(:on_offline) watcher.call(:on_change) end def online? @online end def host @host ||= "google.com" end def host=(host) @host = host end def port @port ||= 80 end def port=(port) @port = port end def poll! Thread.new do loop do ping ? online! : offline! sleep 30 end end end private def ping Timeout::timeout(3) { TCPSocket.new(host, port).close } true rescue Errno::ECONNREFUSED, Timeout::Error, StandardError false end extend self end end end
Version data entries
5 entries across 5 versions & 1 rubygems