Sha256: 0cdc61ef7965a1ce5dc51d890767549a6d3bbb104ee14d5dc20ee9dbf1caca43

Contents?: true

Size: 1.35 KB

Versions: 3

Compression:

Stored size: 1.35 KB

Contents

#!/usr/bin/env ruby


Dir.chdir(File.join(File.dirname(__FILE__), '..'))

faf_lib_path = File.expand_path(File.dirname(__FILE__) + "/../lib")
$:.unshift(faf_lib_path) unless $:.include?(faf_lib_path)

require 'rubygems' unless defined?(Gem)

require 'ostruct'
require 'optparse'
require 'socket'
require 'fire_and_forget'

options = OpenStruct.new
options.bind_address = "127.0.0.1"
options.port = FAF::DEFAULT_PORT

OptionParser.new do |opts|
  opts.on("-a", "--bind-address ADDRESS", "Bind Address") { |v| options.bind_address = v }
  opts.on("-p", "--port PORT", Integer, "Port") { |p| options.port = p }
end.parse!

server = nil

begin
  server = TCPServer.new(options.bind_address, options.port)
rescue Errno::EADDRINUSE
  puts "FAF unable to bind to #{options.bind_address}:#{options.port}"
  exit(1)
end

run = true

server_thread = Thread.new do
  while run and (session = server.accept)
    request = response = ""

    while l = session.gets
      request << l
    end
    session.close_read

    begin
      response = FAF::Server.parse(request)
    rescue  => e
      response = "ERROR #{e}"
    end
    session.write(response)
    session.close
  end
end

['INT', 'TERM'].each do |signal|
  trap(signal) do
    run = false;
    server_thread.exit
  end
end

puts "Fire&Forget process #{$$} listening on #{options.bind_address}:#{options.port}..."

server_thread.join

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fire_and_forget-0.1.2 bin/fire_forget
fire_and_forget-0.1.1 bin/fire_forget
fire_and_forget-0.1.0 bin/fire_forget