class FSPSocket::Manager

Attributes

m[R]

Public Class Methods

new() click to toggle source
# File lib/fspsocket.rb, line 180
def initialize
  @paths = {}
  @m = FileMonitor.new do |f|
    @@log.info "Modified: #{f.path}"
    file_modified(f.path)
  end
end

Public Instance Methods

add_dir(path) click to toggle source
# File lib/fspsocket.rb, line 188
def add_dir(path)
  @@log.info "add_dir: #{path}"
  @m.add(path) do |f|
    @@log.info "dir modified #{f.path}"
    @paths.store(f.path, [0, 0]) # dummy data
    file_modified(f.path)
  end
end
add_file(path) click to toggle source
# File lib/fspsocket.rb, line 197
def add_file(path)
  @@log.info "add_file: #{path}"
  st = File::stat(path)
  @paths.store(path, [st.mtime, st.size])
  @m << path
end
file_deleted(path) click to toggle source
# File lib/fspsocket.rb, line 231
def file_deleted(path)
  @@log.info "file_deleted: #{path}" 
  @paths.delete(path)
end
file_modified(path) click to toggle source
# File lib/fspsocket.rb, line 212
def file_modified(path)
  @@log.info "file_modifled: #{path}" 
  prev = @paths.fetch(path)
  st = File::stat(path)
  open(path, "r") do |f|
    f.seek(prev[1], IO::SEEK_SET)
    data = f.read(st.size - prev[1])      
    @@log.info "data: #{data}"
    begin
      changed
      idpart = path.sub(@@base, "").split(File::Separator)[1]
      notify_observers [idpart, data] # XXX May contain multiple json entries
    rescue
      STDERR.puts $!
    end
  end # open
  @paths.store(path, [st.mtime, st.size]) 
end
get_file() click to toggle source
# File lib/fspsocket.rb, line 208
def get_file
  @paths.each_key
end
remove_file(path) click to toggle source
# File lib/fspsocket.rb, line 204
def remove_file(path)
  @paths.delete(path)
end