class Fusuma::Plugin::Inputs::TimerInput

libinput commands wrapper

def config_param_types

def config_param_types
  {
    interval: [Float]
  }
end

def create_io

def create_io
  IO.pipe
end

def interval

def interval
  config_params(:interval) || DEFAULT_INTERVAL
end

def io

def io
  @io ||= begin
    reader, writer = create_io
    @pid = start(reader, writer)
    reader
  end
end

def start(reader, writer)

def start(reader, writer)
  pid = fork do
    timer_loop(reader, writer)
  end
  Process.detach(pid)
  writer.close
  pid
end

def timer_loop(reader, writer)

def timer_loop(reader, writer)
  reader.close
  begin
    loop do
      sleep interval
      writer.puts 'timer'
    end
  rescue Errno::EPIPE
    exit 0
  rescue StandardError => e
    MultiLogger.error e
  end
end