Sha256: 57b64aaabab52345fd2a5fb419f9394c6e7a5999ea0073fe09cbace4ffcee7ba
Contents?: true
Size: 1.47 KB
Versions: 2
Compression:
Stored size: 1.47 KB
Contents
# -*- encoding: utf-8 -*- require 'socket' module Bluepill module Socket TIMEOUT = 60 # Used for client commands MAX_ATTEMPTS = 5 extend self def client(base_dir, name, &block) UNIXSocket.open(socket_path(base_dir, name), &block) end def client_command(base_dir, name, command) res = nil MAX_ATTEMPTS.times do |current_attempt| begin client(base_dir, name) do |socket| Timeout.timeout(TIMEOUT) do socket.puts command res = Marshal.load(socket.read) end end break rescue EOFError, Timeout::Error if current_attempt == MAX_ATTEMPTS - 1 abort("Socket Timeout: Server may not be responding") end puts "Retry #{current_attempt + 1} of #{MAX_ATTEMPTS}" end end res end def server(base_dir, name) socket_path = self.socket_path(base_dir, name) begin UNIXServer.open(socket_path) rescue Errno::EADDRINUSE # if sock file has been created. test to see if there is a server begin UNIXSocket.open(socket_path) rescue Errno::ECONNREFUSED File.delete(socket_path) return UNIXServer.open(socket_path) else logger.error("Server is already running!") exit(7) end end end def socket_path(base_dir, name) File.join(base_dir, 'socks', name + ".sock") end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
kostya-bluepill-0.0.60.2 | lib/bluepill/socket.rb |
kostya-bluepill-0.0.60.1 | lib/bluepill/socket.rb |