def unix_listener_stats(paths = nil)
rv = Hash.new { |h,k| h[k.freeze] = Raindrops::ListenStats.new(0, 0) }
if nil == paths
paths = [ '[^\n]+' ]
else
paths = paths.map do |path|
path = path.dup
path.force_encoding(Encoding::BINARY) if defined?(Encoding)
rv[path]
Regexp.escape(path)
end
end
paths = /^\w+: \d+ \d+ 00000000 \d+ (\d+)\s+\d+ (#{paths.join('|')})$/n
File.read(*PROC_NET_UNIX_ARGS).scan(paths) do |s|
path = s[-1]
case s[0].to_i
when 2 then rv[path].queued += 1
when 3 then rv[path].active += 1
end
end
rv
end