0001    #if os(Linux)
0002    import Glibc
0003    #else
0004    import Darwin.C
0005    #endif
0006    
0007    import Nest
0008    import Inquiline
0009    
0010    
0011    protocol WorkerType
SyncronousWorker.swift:11
final class SyncronousWorker : WorkerType {
{ 0012 /// Initialises the worker 0013 init(logger: Logger, listeners: [Socket], timeout: Int, application: RequestType -> ResponseType) 0014 0015 var temp
Arbiter.swift:194
      let lastUpdate = currentTime.tv_sec - worker.temp.lastUpdate.tv_sec
: WorkerTemp { get } 0016 0017 /// Indicates when the worker has been aborted, mostly used by the arbiter 0018 var aborted
Arbiter.swift:197
        if worker.aborted {
Arbiter.swift:203
          worker.aborted = true
: Bool { get set } 0019 0020 /// Runs the worker 0021 func run() 0022 } 0023 0024 0025 func getenv
Worker.swift:43
    var tempdir = getenv("TMPDIR", default: "/tmp/")
(key: String, `default`: String) -> String { 0026 let result = getenv(key) 0027 if result != nil { 0028 if let value = String.fromCString(result) { 0029 return value 0030 } 0031 } 0032 0033 return `default` 0034 } 0035 0036 0037 class WorkerTemp
SyncronousWorker.swift:17
  let temp: WorkerTemp
Worker.swift:15
  var temp: WorkerTemp { get }
{ 0038 let descriptor
Worker.swift:52
    descriptor = withUnsafeMutablePointer(&templateChars[0]) { buffer -> Int32 in
Worker.swift:56
    if descriptor == -1 {
Worker.swift:67
    if fcntl(descriptor, F_GETPATH, filename.bytes) == -1 {
Worker.swift:77
    close(descriptor)
Worker.swift:87
    fchmod(descriptor, state)
Worker.swift:92
    fstat(descriptor, &stats)
: Int32 0039 var state
Worker.swift:81
    if state == 1 {
Worker.swift:82
      state = 0
Worker.swift:84
      state = 1
Worker.swift:87
    fchmod(descriptor, state)
: mode_t = 0 0040 0041 init() { 0042 0043 var tempdir = getenv("TMPDIR", default: "/tmp/") 0044 #if !os(Linux) 0045 if !tempdir.hasSuffix("/") { 0046 tempdir += "/" 0047 } 0048 #endif 0049 0050 let template = "\(tempdir)/curassow.XXXXXXXX" 0051 var templateChars = Array(template.utf8).map { Int8($0) } + [0] 0052 descriptor = withUnsafeMutablePointer(&templateChars[0]) { buffer -> Int32 in 0053 return mkstemp(buffer) 0054 } 0055 0056 if descriptor == -1 { 0057 fatalError("mkstemp(\(template)) failed") 0058 } 0059 0060 // Find the filename 0061 #if os(Linux) 0062 let filename = Data(capacity: Int(PATH_MAX)) 0063 let size = readlink("/proc/self/fd/\(descriptor)", filename.bytes, filename.capacity) 0064 filename.bytes[size] = 0 0065 #else 0066 let filename = Data(capacity: Int(MAXPATHLEN)) 0067 if fcntl(descriptor, F_GETPATH, filename.bytes) == -1 { 0068 fatalError("fcntl failed") 0069 } 0070 #endif 0071 0072 // Unlink, so once last close is done, it gets deleted 0073 unlink(filename.string!) 0074 } 0075 0076 deinit { 0077 close(descriptor) 0078 } 0079 0080 func notify
SyncronousWorker.swift:83
    temp.notify()
() { 0081 if state == 1 { 0082 state = 0 0083 } else { 0084 state = 1 0085 } 0086 0087 fchmod(descriptor, state) 0088 } 0089 0090 var lastUpdate
Arbiter.swift:194
      let lastUpdate = currentTime.tv_sec - worker.temp.lastUpdate.tv_sec
: timespec { 0091 var stats = stat() 0092 fstat(descriptor, &stats) 0093 #if os(Linux) 0094 return stats.st_ctim 0095 #else 0096 return stats.st_ctimespec 0097 #endif 0098 } 0099 } 0100