Emcee
27 строк · 1.0 Кб
1import BalancingBucketQueue
2import BucketQueue
3import BucketQueueModels
4import QueueCommunication
5import QueueModels
6import WorkerCapabilitiesModels
7
8public final class WorkerPermissionAwareDequeueableBucketSource: DequeueableBucketSource {
9private let dequeueableBucketSource: DequeueableBucketSource
10private let workerPermissionProvider: WorkerPermissionProvider
11
12public init(
13dequeueableBucketSource: DequeueableBucketSource,
14workerPermissionProvider: WorkerPermissionProvider
15) {
16self.dequeueableBucketSource = dequeueableBucketSource
17self.workerPermissionProvider = workerPermissionProvider
18}
19
20public func dequeueBucket(workerCapabilities: Set<WorkerCapability>, workerId: WorkerId) -> DequeuedBucket? {
21guard workerPermissionProvider.utilizationPermissionForWorker(workerId: workerId) == .allowedToUtilize else {
22return nil
23}
24
25return dequeueableBucketSource.dequeueBucket(workerCapabilities: workerCapabilities, workerId: workerId)
26}
27}
28