Emcee

Форк
0
/
ToggleWorkersSharingCommand.swift 
47 строк · 1.7 Кб
1
import ArgLib
2
import EmceeDI
3
import EmceeLogging
4
import QueueClient
5
import RESTMethods
6
import RequestSender
7
import SocketModels
8

9
public final class ToggleWorkersSharingCommand: Command {
10
    public let name = "toggleWorkersSharing"
11
    
12
    public let description = "Changes state of queue workers sharing feature"
13
    
14
    public var arguments: Arguments = [
15
        ArgumentDescriptions.queueServer.asRequired,
16
        ArgumentDescriptions.setFeatureStatus.asRequired,
17
    ]
18
    
19
    private let di: DI
20
    
21
    public init(di: DI) throws {
22
        self.di = di
23
    }
24
    
25
    public func run(payload: CommandPayload) throws {
26
        let requestSenderProvider: RequestSenderProvider = try di.get()
27
        let logger: ContextualLogger = try di.get()
28
        
29
        let queueServerAddress: SocketAddress = try payload.expectedSingleTypedValue(argumentName: ArgumentDescriptions.queueServer.name)
30
        let sharingEnabled: Bool = try payload.expectedSingleTypedValue(argumentName: ArgumentDescriptions.setFeatureStatus.name)
31
        
32
        let toggler = DefaultWorkersSharingToggler(
33
            timeout: 15,
34
            requestSender: requestSenderProvider.requestSender(
35
                socketAddress: queueServerAddress
36
            )
37
        )
38
        
39
        let sharingStatus: WorkersSharingFeatureStatus = sharingEnabled ? .enabled : .disabled
40
        do {
41
            try toggler.setSharingStatus(sharingStatus)
42
            logger.info("Successfully \(sharingStatus) workers sharing feature on queue \(queueServerAddress)")
43
        } catch {
44
            logger.error("Failed to \(sharingStatus) workers sharing feature on queue \(queueServerAddress): \(error)")
45
        }
46
    }
47
}
48

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

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

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

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