Module: TriggerSwitchD::IPC

Defined in:
lib/trigger_switch_d/ipc.rb

Class Method Summary collapse

Class Method Details

.create(socket_path) ⇒ Object

unix socket thread, see README.rdoc for usage



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/trigger_switch_d/ipc.rb', line 21

def self.create(socket_path)
  File.delete(socket_path) if File.exist? socket_path
  sock = UNIXServer.open(socket_path)
  Thread.start(sock) do |sock|
    while(!["stop"].include?(Thread.current["received"]))
      Thread.current["received"] = ""
      s1 = sock.accept
      while(!["stop","bye"].include?(Thread.current["received"]))
        Thread.current["received"] = s1.recvfrom(200)[0]
        Thread.current["response"] = Thread.current["received"] if Thread.current["received"] == "bye"
        Thread.stop if !["bye",""].include?(Thread.current["received"])
        s1.send(Thread.current["response"],0) unless Thread.current["received"] == ""
        Thread.current["received"] = "bye" if Thread.current["received"] == ""
      end
    end
  end
end