0001 #if os(Linux) 0002 import Glibc 0003 #else 0004 import Darwin.C 0005 #endif 0006 0007 var sharedHandler: SignalHandler? 0008 0009 class SignalHandler
Arbiter.swift:72 sharedHandler = signalHandlerSignals.swift:20 signal(SIGTERM) { _ in sharedHandler?.handle(.Terminate) }Signals.swift:21 signal(SIGINT) { _ in sharedHandler?.handle(.Interrupt) }Signals.swift:22 signal(SIGQUIT) { _ in sharedHandler?.handle(.Quit) }Signals.swift:23 signal(SIGTTIN) { _ in sharedHandler?.handle(.TTIN) }Signals.swift:24 signal(SIGTTOU) { _ in sharedHandler?.handle(.TTOU) }Signals.swift:25 signal(SIGCHLD) { _ in sharedHandler?.handle(.Child) }SyncronousWorker.swift:34 sharedHandler = signalsSyncronousWorker.swift:60 sharedHandler?.process()SyncronousWorker.swift:88 let (read, _, _) = select(listeners + [sharedHandler!.pipe[0]], [], [], timeout: timeout){ 0010 enum Signal
Arbiter.swift:48 var signalHandler: SignalHandler!Arbiter.swift:65 signalHandler = try SignalHandler()Arbiter.swift:73 SignalHandler.registerSignals()Signals.swift:7 var sharedHandler: SignalHandler?SyncronousWorker.swift:30 let signals = try SignalHandler()SyncronousWorker.swift:35 SignalHandler.registerSignals(){ 0011 case Interrupt
Signals.swift:29 var signalQueue: [Signal] = []Signals.swift:45 func handle(signal: Signal) {Signals.swift:50 var callbacks: [Signal: () -> ()] = [:]Signals.swift:51 func register(signal: Signal, _ callback: () -> ()) {0012 case Quit
Arbiter.swift:66 signalHandler.register(.Interrupt, handleINT)Signals.swift:21 signal(SIGINT) { _ in sharedHandler?.handle(.Interrupt) }SyncronousWorker.swift:31 signals.register(.Interrupt, handleQuit)0013 case TTIN
Arbiter.swift:67 signalHandler.register(.Quit, handleQUIT)Signals.swift:22 signal(SIGQUIT) { _ in sharedHandler?.handle(.Quit) }SyncronousWorker.swift:32 signals.register(.Quit, handleQuit)0014 case TTOU
Arbiter.swift:69 signalHandler.register(.TTIN, handleTTIN)Signals.swift:23 signal(SIGTTIN) { _ in sharedHandler?.handle(.TTIN) }0015 case Terminate
Arbiter.swift:70 signalHandler.register(.TTOU, handleTTOU)Signals.swift:24 signal(SIGTTOU) { _ in sharedHandler?.handle(.TTOU) }0016 case Child
Arbiter.swift:68 signalHandler.register(.Terminate, handleTerminate)Signals.swift:20 signal(SIGTERM) { _ in sharedHandler?.handle(.Terminate) }SyncronousWorker.swift:33 signals.register(.Terminate, handleTerminate)0017 } 0018 0019 class func registerSignals
Arbiter.swift:71 signalHandler.register(.Child, handleChild)Signals.swift:25 signal(SIGCHLD) { _ in sharedHandler?.handle(.Child) }() { 0020 signal(SIGTERM) { _ in sharedHandler?.handle(.Terminate) } 0021 signal(SIGINT) { _ in sharedHandler?.handle(.Interrupt) } 0022 signal(SIGQUIT) { _ in sharedHandler?.handle(.Quit) } 0023 signal(SIGTTIN) { _ in sharedHandler?.handle(.TTIN) } 0024 signal(SIGTTOU) { _ in sharedHandler?.handle(.TTOU) } 0025 signal(SIGCHLD) { _ in sharedHandler?.handle(.Child) } 0026 } 0027 0028 var pipe
Arbiter.swift:73 SignalHandler.registerSignals()SyncronousWorker.swift:35 SignalHandler.registerSignals(): [Socket] 0029 var signalQueue
Arbiter.swift:119 let (read, _, _) = select([signalHandler.pipe[0]], [], [], timeout: timeout)Arbiter.swift:123 while try signalHandler.pipe[0].read(1).count > 0 {}Signals.swift:32 pipe = try Socket.pipe()Signals.swift:34 for socket in pipe {Signals.swift:42 pipe[1].send(".")SyncronousWorker.swift:88 let (read, _, _) = select(listeners + [sharedHandler!.pipe[0]], [], [], timeout: timeout): [Signal] = [] 0030 0031 init
Signals.swift:46 signalQueue.append(signal)Signals.swift:56 let result = !signalQueue.isEmptySignals.swift:58 if !signalQueue.isEmpty {Signals.swift:59 if let handler = callbacks[signalQueue.removeFirst()] {() throws { 0032 pipe = try Socket.pipe() 0033 0034 for socket in pipe { 0035 socket.closeOnExec = true 0036 socket.blocking = false 0037 } 0038 } 0039 0040 // Wake up the process by writing to the pipe 0041 func wakeup
Arbiter.swift:65 signalHandler = try SignalHandler()SyncronousWorker.swift:30 let signals = try SignalHandler()() { 0042 pipe[1].send(".") 0043 } 0044 0045 func handle
Signals.swift:47 wakeup()(signal: Signal) { 0046 signalQueue.append(signal) 0047 wakeup() 0048 } 0049 0050 var callbacks
Signals.swift:20 signal(SIGTERM) { _ in sharedHandler?.handle(.Terminate) }Signals.swift:21 signal(SIGINT) { _ in sharedHandler?.handle(.Interrupt) }Signals.swift:22 signal(SIGQUIT) { _ in sharedHandler?.handle(.Quit) }Signals.swift:23 signal(SIGTTIN) { _ in sharedHandler?.handle(.TTIN) }Signals.swift:24 signal(SIGTTOU) { _ in sharedHandler?.handle(.TTOU) }Signals.swift:25 signal(SIGCHLD) { _ in sharedHandler?.handle(.Child) }: [Signal: () -> ()] = [:] 0051 func register
Signals.swift:52 callbacks[signal] = callbackSignals.swift:59 if let handler = callbacks[signalQueue.removeFirst()] {(signal: Signal, _ callback: () -> ()) { 0052 callbacks[signal] = callback 0053 } 0054 0055 func process
Arbiter.swift:66 signalHandler.register(.Interrupt, handleINT)Arbiter.swift:67 signalHandler.register(.Quit, handleQUIT)Arbiter.swift:68 signalHandler.register(.Terminate, handleTerminate)Arbiter.swift:69 signalHandler.register(.TTIN, handleTTIN)Arbiter.swift:70 signalHandler.register(.TTOU, handleTTOU)Arbiter.swift:71 signalHandler.register(.Child, handleChild)SyncronousWorker.swift:31 signals.register(.Interrupt, handleQuit)SyncronousWorker.swift:32 signals.register(.Quit, handleQuit)SyncronousWorker.swift:33 signals.register(.Terminate, handleTerminate)() -> Bool { 0056 let result = !signalQueue.isEmpty 0057 0058 if !signalQueue.isEmpty { 0059 if let handler = callbacks[signalQueue.removeFirst()] { 0060 handler() 0061 } 0062 } 0063 0064 return result 0065 } 0066 } 0067
Arbiter.swift:88 if !signalHandler.process() {SyncronousWorker.swift:60 sharedHandler?.process()