Showing
3 changed files
with
127 additions
and
75 deletions
1 | +package org.onlab.onos.net.resource; | ||
2 | + | ||
3 | +import java.util.Collection; | ||
4 | +import java.util.HashSet; | ||
5 | +import java.util.Set; | ||
6 | + | ||
7 | +import org.onlab.onos.net.Link; | ||
8 | +import org.onlab.onos.net.intent.IntentId; | ||
9 | + | ||
10 | +import com.google.common.collect.ImmutableSet; | ||
11 | + | ||
12 | +/** | ||
13 | + * Implementation of {@link LinkResourceRequest}. | ||
14 | + */ | ||
15 | +public final class DefaultLinkResourceRequest implements LinkResourceRequest { | ||
16 | + | ||
17 | + private final IntentId intentId; | ||
18 | + private final Collection<Link> links; | ||
19 | + private final Set<ResourceRequest> resources; | ||
20 | + | ||
21 | + /** | ||
22 | + * Creates a new link resource request with the given ID, links, and | ||
23 | + * resource requests. | ||
24 | + * | ||
25 | + * @param intentId intent ID related to this request | ||
26 | + * @param links a set of links for the request | ||
27 | + * @param resources a set of resources to be requested | ||
28 | + */ | ||
29 | + private DefaultLinkResourceRequest(IntentId intentId, | ||
30 | + Collection<Link> links, | ||
31 | + Set<ResourceRequest> resources) { | ||
32 | + this.intentId = intentId; | ||
33 | + this.links = ImmutableSet.copyOf(links); | ||
34 | + this.resources = ImmutableSet.copyOf(resources); | ||
35 | + } | ||
36 | + | ||
37 | + @Override | ||
38 | + public IntentId intendId() { | ||
39 | + return intentId; | ||
40 | + } | ||
41 | + | ||
42 | + @Override | ||
43 | + public Collection<Link> links() { | ||
44 | + return links; | ||
45 | + } | ||
46 | + | ||
47 | + @Override | ||
48 | + public Set<ResourceRequest> resources() { | ||
49 | + return resources; | ||
50 | + } | ||
51 | + | ||
52 | + /** | ||
53 | + * Returns builder of link resource request. | ||
54 | + * | ||
55 | + * @param intentId intent ID related to this request | ||
56 | + * @param links a set of links for the request | ||
57 | + * @return builder of link resource request | ||
58 | + */ | ||
59 | + public static LinkResourceRequest.Builder builder( | ||
60 | + IntentId intentId, Collection<Link> links) { | ||
61 | + return new Builder(intentId, links); | ||
62 | + } | ||
63 | + | ||
64 | + /** | ||
65 | + * Builder of link resource request. | ||
66 | + */ | ||
67 | + public static final class Builder implements LinkResourceRequest.Builder { | ||
68 | + private IntentId intentId; | ||
69 | + private Collection<Link> links; | ||
70 | + private Set<ResourceRequest> resources; | ||
71 | + | ||
72 | + /** | ||
73 | + * Creates a new link resource request. | ||
74 | + * | ||
75 | + * @param intentId intent ID related to this request | ||
76 | + * @param links a set of links for the request | ||
77 | + */ | ||
78 | + private Builder(IntentId intentId, Collection<Link> links) { | ||
79 | + this.intentId = intentId; | ||
80 | + this.links = links; | ||
81 | + this.resources = new HashSet<>(); | ||
82 | + } | ||
83 | + | ||
84 | + /** | ||
85 | + * Adds lambda request. | ||
86 | + * | ||
87 | + * @return self | ||
88 | + */ | ||
89 | + @Override | ||
90 | + public Builder addLambdaRequest() { | ||
91 | + resources.add(new LambdaResourceRequest()); | ||
92 | + return this; | ||
93 | + } | ||
94 | + | ||
95 | + /** | ||
96 | + * Adds bandwidth request with bandwidth value. | ||
97 | + * | ||
98 | + * @param bandwidth bandwidth value to be requested | ||
99 | + * @return self | ||
100 | + */ | ||
101 | + @Override | ||
102 | + public Builder addBandwidthRequest(double bandwidth) { | ||
103 | + resources.add(new BandwidthResourceRequest(bandwidth)); | ||
104 | + return this; | ||
105 | + } | ||
106 | + | ||
107 | + /** | ||
108 | + * Returns link resource request. | ||
109 | + * | ||
110 | + * @return link resource request | ||
111 | + */ | ||
112 | + @Override | ||
113 | + public LinkResourceRequest build() { | ||
114 | + return new DefaultLinkResourceRequest(intentId, links, resources); | ||
115 | + } | ||
116 | + } | ||
117 | + | ||
118 | +} |
... | @@ -5,7 +5,7 @@ import org.onlab.onos.net.Link; | ... | @@ -5,7 +5,7 @@ import org.onlab.onos.net.Link; |
5 | /** | 5 | /** |
6 | * Representation of allocated link resources. | 6 | * Representation of allocated link resources. |
7 | */ | 7 | */ |
8 | -public interface LinkResourceAllocations { | 8 | +public interface LinkResourceAllocations extends LinkResourceRequest { |
9 | /** | 9 | /** |
10 | * Returns allocated resource for the given link. | 10 | * Returns allocated resource for the given link. |
11 | * | 11 | * | ... | ... |
1 | package org.onlab.onos.net.resource; | 1 | package org.onlab.onos.net.resource; |
2 | 2 | ||
3 | import java.util.Collection; | 3 | import java.util.Collection; |
4 | -import java.util.HashSet; | ||
5 | import java.util.Set; | 4 | import java.util.Set; |
6 | 5 | ||
7 | import org.onlab.onos.net.Link; | 6 | import org.onlab.onos.net.Link; |
8 | import org.onlab.onos.net.intent.IntentId; | 7 | import org.onlab.onos.net.intent.IntentId; |
9 | 8 | ||
10 | -import com.google.common.collect.ImmutableSet; | ||
11 | - | ||
12 | /** | 9 | /** |
13 | * Representation of a request for link resource. | 10 | * Representation of a request for link resource. |
14 | */ | 11 | */ |
15 | -public final class LinkResourceRequest implements ResourceRequest { | 12 | +public interface LinkResourceRequest extends ResourceRequest { |
16 | - // TODO: should this class be interface? | ||
17 | - | ||
18 | - private final IntentId intentId; | ||
19 | - private final Collection<Link> links; | ||
20 | - private final Set<ResourceRequest> resources; | ||
21 | - | ||
22 | - /** | ||
23 | - * Creates a new link resource request with the given ID, links, and | ||
24 | - * resource requests. | ||
25 | - * | ||
26 | - * @param intentId intent ID related to this request | ||
27 | - * @param links a set of links for the request | ||
28 | - * @param resources a set of resources to be requested | ||
29 | - */ | ||
30 | - private LinkResourceRequest(IntentId intentId, | ||
31 | - Collection<Link> links, | ||
32 | - Set<ResourceRequest> resources) { | ||
33 | - this.intentId = intentId; | ||
34 | - this.links = ImmutableSet.copyOf(links); | ||
35 | - this.resources = ImmutableSet.copyOf(resources); | ||
36 | - } | ||
37 | 13 | ||
38 | /** | 14 | /** |
39 | * Returns the {@link IntentId} associated with the request. | 15 | * Returns the {@link IntentId} associated with the request. |
40 | * | 16 | * |
41 | * @return the {@link IntentId} associated with the request | 17 | * @return the {@link IntentId} associated with the request |
42 | */ | 18 | */ |
43 | - IntentId intendId() { | 19 | + IntentId intendId(); |
44 | - return intentId; | ||
45 | - } | ||
46 | 20 | ||
47 | /** | 21 | /** |
48 | * Returns the set of target links. | 22 | * Returns the set of target links. |
49 | * | 23 | * |
50 | * @return the set of target links | 24 | * @return the set of target links |
51 | */ | 25 | */ |
52 | - Collection<Link> links() { | 26 | + Collection<Link> links(); |
53 | - return links; | ||
54 | - } | ||
55 | 27 | ||
56 | /** | 28 | /** |
57 | * Returns the set of resource requests. | 29 | * Returns the set of resource requests. |
58 | * | 30 | * |
59 | * @return the set of resource requests | 31 | * @return the set of resource requests |
60 | */ | 32 | */ |
61 | - Set<ResourceRequest> resources() { | 33 | + Set<ResourceRequest> resources(); |
62 | - return resources; | ||
63 | - } | ||
64 | - | ||
65 | - /** | ||
66 | - * Returns builder of link resource request. | ||
67 | - * | ||
68 | - * @param intentId intent ID related to this request | ||
69 | - * @param links a set of links for the request | ||
70 | - * @return builder of link resource request | ||
71 | - */ | ||
72 | - public static LinkResourceRequest.Builder builder( | ||
73 | - IntentId intentId, Collection<Link> links) { | ||
74 | - return new Builder(intentId, links); | ||
75 | - } | ||
76 | 34 | ||
77 | /** | 35 | /** |
78 | * Builder of link resource request. | 36 | * Builder of link resource request. |
79 | */ | 37 | */ |
80 | - public static final class Builder { | 38 | + interface Builder { |
81 | - private IntentId intentId; | ||
82 | - private Collection<Link> links; | ||
83 | - private Set<ResourceRequest> resources; | ||
84 | - | ||
85 | - /** | ||
86 | - * Creates a new link resource request. | ||
87 | - * | ||
88 | - * @param intentId intent ID related to this request | ||
89 | - * @param links a set of links for the request | ||
90 | - */ | ||
91 | - private Builder(IntentId intentId, Collection<Link> links) { | ||
92 | - this.intentId = intentId; | ||
93 | - this.links = links; | ||
94 | - this.resources = new HashSet<>(); | ||
95 | - } | ||
96 | - | ||
97 | /** | 39 | /** |
98 | * Adds lambda request. | 40 | * Adds lambda request. |
99 | * | 41 | * |
100 | * @return self | 42 | * @return self |
101 | */ | 43 | */ |
102 | - public Builder addLambdaRequest() { | 44 | + public Builder addLambdaRequest(); |
103 | - resources.add(new LambdaResourceRequest()); | ||
104 | - return this; | ||
105 | - } | ||
106 | 45 | ||
107 | /** | 46 | /** |
108 | * Adds bandwidth request with bandwidth value. | 47 | * Adds bandwidth request with bandwidth value. |
... | @@ -110,18 +49,13 @@ public final class LinkResourceRequest implements ResourceRequest { | ... | @@ -110,18 +49,13 @@ public final class LinkResourceRequest implements ResourceRequest { |
110 | * @param bandwidth bandwidth value to be requested | 49 | * @param bandwidth bandwidth value to be requested |
111 | * @return self | 50 | * @return self |
112 | */ | 51 | */ |
113 | - public Builder addBandwidthRequest(double bandwidth) { | 52 | + public Builder addBandwidthRequest(double bandwidth); |
114 | - resources.add(new BandwidthResourceRequest(bandwidth)); | ||
115 | - return this; | ||
116 | - } | ||
117 | 53 | ||
118 | /** | 54 | /** |
119 | * Returns link resource request. | 55 | * Returns link resource request. |
120 | * | 56 | * |
121 | * @return link resource request | 57 | * @return link resource request |
122 | */ | 58 | */ |
123 | - public LinkResourceRequest build() { | 59 | + public LinkResourceRequest build(); |
124 | - return new LinkResourceRequest(intentId, links, resources); | ||
125 | - } | ||
126 | } | 60 | } |
127 | } | 61 | } | ... | ... |
-
Please register or login to post a comment