blob: 0330821cb84050e24055dbfd2cef5168e578eb60 [file] [log] [blame]
Toshio Koide5c0a7262014-10-23 14:50:21 -07001package org.onlab.onos.net.resource.impl;
Toshio Koideca0fcff2014-10-23 14:08:36 -07002
3import java.util.Collection;
4import java.util.Collections;
5import java.util.Map;
6import java.util.Set;
7
8import org.onlab.onos.net.Link;
9import org.onlab.onos.net.intent.IntentId;
Toshio Koide5c0a7262014-10-23 14:50:21 -070010import org.onlab.onos.net.resource.LinkResourceAllocations;
11import org.onlab.onos.net.resource.LinkResourceRequest;
12import org.onlab.onos.net.resource.ResourceAllocation;
13import org.onlab.onos.net.resource.ResourceRequest;
14import org.onlab.onos.net.resource.ResourceType;
Toshio Koideca0fcff2014-10-23 14:08:36 -070015
16/**
17 * Implementation of {@link LinkResourceAllocations}.
18 */
19public class DefaultLinkResourceAllocations implements LinkResourceAllocations {
20 private final LinkResourceRequest request;
21 private final Map<Link, Set<ResourceAllocation>> allocations;
22
23 /**
24 * Creates a new link resource allocations.
25 *
26 * @param request requested resources
27 * @param allocations allocated resources
28 */
29 protected DefaultLinkResourceAllocations(LinkResourceRequest request,
30 Map<Link, Set<ResourceAllocation>> allocations) {
31 this.request = request;
32 this.allocations = allocations;
33 }
34
35 @Override
36 public IntentId intendId() {
37 return request.intendId();
38 }
39
40 @Override
41 public Collection<Link> links() {
42 return request.links();
43 }
44
45 @Override
46 public Set<ResourceRequest> resources() {
47 return request.resources();
48 }
49
50 @Override
51 public ResourceType type() {
52 return null;
53 }
54
55 @Override
56 public Set<ResourceAllocation> getResourceAllocation(Link link) {
57 Set<ResourceAllocation> result = allocations.get(link);
58 if (result == null) {
59 result = Collections.emptySet();
60 }
61 return result;
62 }
63
64}