CommandLineToolkit

Форк
0
/
LaunchdSocketActivation.swift 
30 строк · 989.0 Байт
1
import Foundation
2

3
public enum LaunchdSocketActivation {
4
    /// Read `man launch_activate_socket`.
5
    /// - Parameter name: The name of the socket entry in the service's Sockets dictionary.
6
    /// - Throws:`LaunchdSocketActivationError`
7
    /// - Returns: a set of file descriptors corresponding to a socket service that launchd(8) has created and advertised on behalf of the job
8
    public static func activateSocket(name: String) throws -> [Int32] {
9
#if os(macOS)
10
        var ld_sockets = UnsafeMutablePointer<Int32>.allocate(capacity: 0)
11
        defer {
12
            ld_sockets.deallocate()
13
        }
14
        var count: size_t = 0
15
        
16
        let err = launch_activate_socket(name, &ld_sockets, &count)
17
        guard err == 0 else {
18
            throw LaunchdSocketActivationError.errorCode(err)
19
        }
20
        
21
        var fds = [Int32]()
22
        for i in 0 ..< count {
23
            fds.append(ld_sockets[i])
24
        }
25
        return fds
26
#else
27
        return []
28
#endif
29
    }
30
}
31

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.