mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
b4489ae953
https://github.com/ruby/ruby/pull/364 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
51 lines
873 B
Ruby
51 lines
873 B
Ruby
#
|
|
# dbiff.rb - distributed cdbiff (server)
|
|
# * original: cdbiff by Satoru Takabayashi <http://namazu.org/~satoru/cdbiff>
|
|
|
|
require 'drb/drb'
|
|
require 'drb/eq'
|
|
require 'drb/observer'
|
|
|
|
class Biff
|
|
include DRb::DRbObservable
|
|
|
|
def initialize(filename, interval)
|
|
super()
|
|
@filename = filename
|
|
@interval = interval
|
|
end
|
|
|
|
def run
|
|
last = Time.now
|
|
while true
|
|
begin
|
|
sleep(@interval)
|
|
current = File::mtime(@filename)
|
|
if current > last
|
|
changed
|
|
begin
|
|
notify_observers(@filename, current)
|
|
rescue Error
|
|
end
|
|
last = current
|
|
end
|
|
rescue
|
|
next
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def main
|
|
filename = "/var/mail/#{ENV['USER']}"
|
|
interval = 15
|
|
uri = 'druby://:19903'
|
|
|
|
biff = Biff.new(filename, interval)
|
|
|
|
DRb.start_service(uri, biff)
|
|
biff.run
|
|
end
|
|
|
|
main
|
|
|