Move hasEnoughResource() to ContinuousResourceAllocation
Change-Id: I3104d115a57876a75c699f4f1a46aa7bdf66d484
Showing
4 changed files
with
28 additions
and
51 deletions
... | @@ -39,7 +39,7 @@ import java.util.stream.Stream; | ... | @@ -39,7 +39,7 @@ import java.util.stream.Stream; |
39 | import static org.onosproject.store.resource.impl.ConsistentResourceStore.MAX_RETRIES; | 39 | import static org.onosproject.store.resource.impl.ConsistentResourceStore.MAX_RETRIES; |
40 | import static org.onosproject.store.resource.impl.ConsistentResourceStore.RETRY_DELAY; | 40 | import static org.onosproject.store.resource.impl.ConsistentResourceStore.RETRY_DELAY; |
41 | import static org.onosproject.store.resource.impl.ConsistentResourceStore.SERIALIZER; | 41 | import static org.onosproject.store.resource.impl.ConsistentResourceStore.SERIALIZER; |
42 | -import static org.onosproject.store.resource.impl.ResourceStoreUtil.hasEnoughResource; | 42 | +import static org.onosproject.store.resource.impl.ContinuousResourceAllocation.hasEnoughResource; |
43 | 43 | ||
44 | class ConsistentContinuousResourceStore { | 44 | class ConsistentContinuousResourceStore { |
45 | private ConsistentMap<ContinuousResourceId, ContinuousResourceAllocation> consumers; | 45 | private ConsistentMap<ContinuousResourceId, ContinuousResourceAllocation> consumers; | ... | ... |
... | @@ -36,6 +36,32 @@ final class ContinuousResourceAllocation { | ... | @@ -36,6 +36,32 @@ final class ContinuousResourceAllocation { |
36 | this.allocations = allocations; | 36 | this.allocations = allocations; |
37 | } | 37 | } |
38 | 38 | ||
39 | + /** | ||
40 | + * Checks if there is enough resource volume to allocated the requested resource | ||
41 | + * against the specified resource. | ||
42 | + * | ||
43 | + * @param original original resource | ||
44 | + * @param request requested resource | ||
45 | + * @param allocation current allocation of the resource | ||
46 | + * @return true if there is enough resource volume. Otherwise, false. | ||
47 | + */ | ||
48 | + // computational complexity: O(n) where n is the number of allocations | ||
49 | + static boolean hasEnoughResource(ContinuousResource original, | ||
50 | + ContinuousResource request, | ||
51 | + ContinuousResourceAllocation allocation) { | ||
52 | + if (allocation == null) { | ||
53 | + return request.value() <= original.value(); | ||
54 | + } | ||
55 | + | ||
56 | + double allocated = allocation.allocations().stream() | ||
57 | + .filter(x -> x.resource() instanceof ContinuousResource) | ||
58 | + .map(x -> (ContinuousResource) x.resource()) | ||
59 | + .mapToDouble(ContinuousResource::value) | ||
60 | + .sum(); | ||
61 | + double left = original.value() - allocated; | ||
62 | + return request.value() <= left; | ||
63 | + } | ||
64 | + | ||
39 | ContinuousResource original() { | 65 | ContinuousResource original() { |
40 | return original; | 66 | return original; |
41 | } | 67 | } | ... | ... |
core/store/dist/src/main/java/org/onosproject/store/resource/impl/ResourceStoreUtil.java
deleted
100644 → 0
1 | -/* | ||
2 | - * Copyright 2016-present Open Networking Laboratory | ||
3 | - * | ||
4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | - * you may not use this file except in compliance with the License. | ||
6 | - * You may obtain a copy of the License at | ||
7 | - * | ||
8 | - * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | - * | ||
10 | - * Unless required by applicable law or agreed to in writing, software | ||
11 | - * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | - * See the License for the specific language governing permissions and | ||
14 | - * limitations under the License. | ||
15 | - */ | ||
16 | -package org.onosproject.store.resource.impl; | ||
17 | - | ||
18 | -import org.onosproject.net.resource.ContinuousResource; | ||
19 | - | ||
20 | -final class ResourceStoreUtil { | ||
21 | - // prohibit construction | ||
22 | - private ResourceStoreUtil() {} | ||
23 | - | ||
24 | - /** | ||
25 | - * Checks if there is enough resource volume to allocated the requested resource | ||
26 | - * against the specified resource. | ||
27 | - * | ||
28 | - * @param original original resource | ||
29 | - * @param request requested resource | ||
30 | - * @param allocation current allocation of the resource | ||
31 | - * @return true if there is enough resource volume. Otherwise, false. | ||
32 | - */ | ||
33 | - // computational complexity: O(n) where n is the number of allocations | ||
34 | - static boolean hasEnoughResource(ContinuousResource original, | ||
35 | - ContinuousResource request, | ||
36 | - ContinuousResourceAllocation allocation) { | ||
37 | - if (allocation == null) { | ||
38 | - return request.value() <= original.value(); | ||
39 | - } | ||
40 | - | ||
41 | - double allocated = allocation.allocations().stream() | ||
42 | - .filter(x -> x.resource() instanceof ContinuousResource) | ||
43 | - .map(x -> (ContinuousResource) x.resource()) | ||
44 | - .mapToDouble(ContinuousResource::value) | ||
45 | - .sum(); | ||
46 | - double left = original.value() - allocated; | ||
47 | - return request.value() <= left; | ||
48 | - } | ||
49 | -} |
... | @@ -35,7 +35,7 @@ import java.util.stream.Collectors; | ... | @@ -35,7 +35,7 @@ import java.util.stream.Collectors; |
35 | 35 | ||
36 | import static com.google.common.base.Preconditions.checkArgument; | 36 | import static com.google.common.base.Preconditions.checkArgument; |
37 | import static org.onosproject.store.resource.impl.ConsistentResourceStore.SERIALIZER; | 37 | import static org.onosproject.store.resource.impl.ConsistentResourceStore.SERIALIZER; |
38 | -import static org.onosproject.store.resource.impl.ResourceStoreUtil.hasEnoughResource; | 38 | +import static org.onosproject.store.resource.impl.ContinuousResourceAllocation.hasEnoughResource; |
39 | 39 | ||
40 | class TransactionalContinuousResourceStore { | 40 | class TransactionalContinuousResourceStore { |
41 | private final Logger log = LoggerFactory.getLogger(getClass()); | 41 | private final Logger log = LoggerFactory.getLogger(getClass()); | ... | ... |
-
Please register or login to post a comment