jcc
Committed by Gerrit Code Review

Initial sketch of LabelResource APIs

LabelResource subsystem will be used to manage label resources such as
MPLS labels, ... (Part of ONOS-1223)

:)

Change-Id: Ib11eac84d81d7d86eaaf0222cf0bd7d3c64d2e51
1 +package org.onosproject.net.resource;
2 +
3 +import java.util.Objects;
4 +
5 +import org.onosproject.net.Annotations;
6 +import org.onosproject.net.DeviceId;
7 +import org.onosproject.net.provider.ProviderId;
8 +import static com.google.common.base.MoreObjects.toStringHelper;
9 +
10 +/**
11 + * the implementation of a label resource of a device.
12 + */
13 +public final class DefaultLabelResource implements LabelResource {
14 +
15 + private DeviceId deviceId;
16 +
17 + private LabelResourceId labelResourceId;
18 +
19 + /**
20 + * Initialize a label resource object.
21 + * @param deviceId device identifier
22 + * @param labelResourceId label resource id
23 + */
24 + public DefaultLabelResource(String deviceId, long labelResourceId) {
25 + this.deviceId = DeviceId.deviceId(deviceId);
26 + this.labelResourceId = LabelResourceId.labelResourceId(labelResourceId);
27 + }
28 +
29 + /**
30 + * Initialize a label resource object.
31 + * @param deviceId device identifier
32 + * @param labelResourceId label resource id
33 + */
34 + public DefaultLabelResource(DeviceId deviceId,
35 + LabelResourceId labelResourceId) {
36 + this.deviceId = deviceId;
37 + this.labelResourceId = labelResourceId;
38 + }
39 +
40 + @Override
41 + public DeviceId deviceId() {
42 + return deviceId;
43 + }
44 +
45 + @Override
46 + public LabelResourceId labelResourceId() {
47 + return labelResourceId;
48 + }
49 +
50 + @Override
51 + public Annotations annotations() {
52 + return null;
53 + }
54 +
55 + @Override
56 + public ProviderId providerId() {
57 + return null;
58 + }
59 +
60 + @Override
61 + public int hashCode() {
62 + return Objects.hash(deviceId, labelResourceId);
63 + }
64 +
65 + @Override
66 + public boolean equals(Object obj) {
67 + if (obj instanceof DefaultLabelResource) {
68 + DefaultLabelResource that = (DefaultLabelResource) obj;
69 + return Objects.equals(this.deviceId, that.deviceId)
70 + && Objects.equals(this.labelResourceId,
71 + that.labelResourceId);
72 + }
73 + return false;
74 + }
75 +
76 + @Override
77 + public String toString() {
78 + return toStringHelper(this).add("deviceId", deviceId)
79 + .add("labelResourceId", labelResourceId).toString();
80 + }
81 +}
1 +package org.onosproject.net.resource;
2 +
3 +import org.onosproject.net.Annotated;
4 +import org.onosproject.net.DeviceId;
5 +import org.onosproject.net.NetworkResource;
6 +import org.onosproject.net.Provided;
7 +
8 +/**
9 + * Representation of label resource.
10 + */
11 +public interface LabelResource extends Annotated, Provided, NetworkResource {
12 + /**
13 + * Returns device id.
14 + * @return DeviceId
15 + */
16 + public DeviceId deviceId();
17 +
18 + /**
19 + * Returns labelResource Id.
20 + * @return LabelResourceId
21 + */
22 + public LabelResourceId labelResourceId();
23 +}
1 +package org.onosproject.net.resource;
2 +
3 +import org.onosproject.net.DeviceId;
4 +
5 +/**
6 + * Service for managing label resource.
7 + */
8 +public interface LabelResourceAdminService {
9 + /**
10 + * Creates the only label resource of some device id from begin label to end
11 + * label.
12 + *
13 + * @param deviceId device identifier
14 + * @param beginLabel represents for the first label id in the range of label
15 + * pool
16 + * @param endLabel represents for the last label id in the range of label
17 + * pool
18 + * @return success or fail
19 + */
20 + boolean createDevicePool(DeviceId deviceId, LabelResourceId beginLabel,
21 + LabelResourceId endLabel);
22 +
23 + /**
24 + * Creates the only global label resource pool.
25 + *
26 + * @param beginLabel represents for the first label id in the range of label
27 + * pool
28 + * @param endLabel represents for the last label id in the range of label
29 + * pool
30 + * @return success or fail
31 + */
32 + boolean createGlobalPool(LabelResourceId beginLabel,
33 + LabelResourceId endLabel);
34 +
35 + /**
36 + * Destroys a label resource pool of a specific device id.
37 + *
38 + * @param deviceId device identifier
39 + * @return success or fail
40 + */
41 + boolean destroyDevicePool(DeviceId deviceId);
42 +
43 + /**
44 + * Destroys the global label resource pool.
45 + *
46 + * @return success or fail
47 + */
48 + boolean destroyGlobalPool();
49 +}
1 +package org.onosproject.net.resource;
2 +
3 +import org.onosproject.store.StoreDelegate;
4 +/**
5 + * Label resource store delegate.
6 + */
7 +public interface LabelResourceDelegate extends StoreDelegate<LabelResourceEvent> {
8 +
9 +}
1 +package org.onosproject.net.resource;
2 +
3 +import org.onosproject.event.AbstractEvent;
4 +
5 +/**
6 + * Describes label resource event.
7 + */
8 +public final class LabelResourceEvent
9 + extends AbstractEvent<LabelResourceEvent.Type, LabelResourcePool> {
10 +
11 + /**
12 + * Type of label resource event.
13 + */
14 + public enum Type {
15 + /**
16 + * Signifies that a new pool has been administratively created.
17 + */
18 + POOL_CREATED,
19 + /**
20 + * Signifies that a new pool has been administratively destroyed.
21 + */
22 + POOL_DESTROYED,
23 + /**
24 + * Signifies that a new pool has been administratively changed.
25 + */
26 + POOL_CAPACITY_CHANGED
27 + }
28 +
29 + /**
30 + * Creates an event of a given type and the given LabelResourcePool.
31 + *
32 + * @param type event type
33 + * @param subject pool
34 + */
35 + public LabelResourceEvent(Type type, LabelResourcePool subject) {
36 + super(type, subject);
37 + }
38 +}
1 +package org.onosproject.net.resource;
2 +
3 +import java.util.Objects;
4 +
5 +/**
6 + * Representation of a label.
7 + */
8 +public final class LabelResourceId implements ResourceId {
9 +
10 + private long labelId;
11 +
12 + public static LabelResourceId labelResourceId(long labelResourceId) {
13 + return new LabelResourceId(labelResourceId);
14 + }
15 +
16 + // Public construction is prohibited
17 + private LabelResourceId(long labelId) {
18 + this.labelId = labelId;
19 + }
20 +
21 + public long labelId() {
22 + return labelId;
23 + }
24 +
25 + @Override
26 + public int hashCode() {
27 + return Objects.hashCode(labelId);
28 + }
29 +
30 + @Override
31 + public boolean equals(Object obj) {
32 + if (obj instanceof LabelResourceId) {
33 + LabelResourceId that = (LabelResourceId) obj;
34 + return Objects.equals(this.labelId, that.labelId);
35 + }
36 + return false;
37 + }
38 +
39 + @Override
40 + public String toString() {
41 + return String.valueOf(this.labelId);
42 + }
43 +
44 +}
1 +package org.onosproject.net.resource;
2 +
3 +import org.onosproject.event.EventListener;
4 +/**
5 + * Entity capable of receiving label resource related events.
6 + */
7 +public interface LabelResourceListener extends EventListener<LabelResourceEvent> {
8 +
9 +}
1 +package org.onosproject.net.resource;
2 +
3 +import static com.google.common.base.Preconditions.checkArgument;
4 +
5 +import java.util.Collections;
6 +import java.util.Objects;
7 +import java.util.Set;
8 +
9 +import org.onosproject.net.DeviceId;
10 +
11 +import com.google.common.base.MoreObjects;
12 +import com.google.common.collect.ImmutableSet;
13 +
14 +/**
15 + * Abstraction of the capacity of device label resource or global label
16 + * resource. it's contiguous range of label resource.when a application apply
17 + * some labels of some device,first catch from Set that store
18 + * available labels,if the size of the Set less than the apply number,then get
19 + * labels by calculating with three attributes, beginLabel,endLabel and
20 + * currentUsedMaxLabelId
21 + */
22 +public class LabelResourcePool {
23 +
24 + private final DeviceId deviceId;
25 + private final LabelResourceId beginLabel;
26 + private final LabelResourceId endLabel;
27 + private final long totalNum; // capacity of label resource pool
28 + private final long usedNum; // have used label number
29 + private final LabelResourceId currentUsedMaxLabelId; // the maximal label
30 + // number id
31 + private ImmutableSet<LabelResource> releaseLabelId; // Set of released label
32 +
33 + /**
34 + * Creates a pool by device id,begin label id,end label id.
35 + *
36 + * @param deviceId device identifier
37 + * @param beginLabel represents for the first label id in the range of label
38 + * resource pool
39 + * @param endLabel represents for the last label id in the range of label
40 + * resource pool
41 + */
42 + public LabelResourcePool(String deviceId, long beginLabel, long endLabel) {
43 + this(deviceId, beginLabel, endLabel, endLabel - beginLabel + 1, 0L,
44 + beginLabel, ImmutableSet.copyOf(Collections.emptySet()));
45 + }
46 +
47 + /**
48 + * Creates a pool by device id,begin label id,end label id.
49 + * used to update a pool in the store.
50 + * @param deviceId device identifier
51 + * @param beginLabel represents for the first label id in the range of label
52 + * resource pool
53 + * @param endLabel represents for the last label id in the range of label
54 + * resource pool
55 + * @param totalNum capacity of label resource pool
56 + * @param usedNum have used label number
57 + * @param currentUsedMaxLabelId the maximal label number id
58 + * @param releaseLabelId Set of released label
59 + */
60 + public LabelResourcePool(String deviceId, long beginLabel, long endLabel,
61 + long totalNum, long usedNum,
62 + long currentUsedMaxLabelId,
63 + ImmutableSet<LabelResource> releaseLabelId) {
64 + checkArgument(endLabel >= beginLabel,
65 + "endLabel %s must be greater than or equal to beginLabel %s",
66 + endLabel, beginLabel);
67 + this.deviceId = DeviceId.deviceId(deviceId);
68 + this.beginLabel = LabelResourceId.labelResourceId(beginLabel);
69 + this.endLabel = LabelResourceId.labelResourceId(endLabel);
70 + this.totalNum = totalNum;
71 + this.usedNum = usedNum;
72 + this.currentUsedMaxLabelId = LabelResourceId
73 + .labelResourceId(currentUsedMaxLabelId);
74 + this.releaseLabelId = releaseLabelId;
75 + }
76 +
77 + /**
78 + * Returns a device id.
79 + *
80 + * @return DeviceId
81 + */
82 + public DeviceId deviceId() {
83 + return deviceId;
84 + }
85 +
86 + /**
87 + * Returns a begin Label id.
88 + *
89 + * @return begin Label id
90 + */
91 + public LabelResourceId beginLabel() {
92 + return beginLabel;
93 + }
94 +
95 + /**
96 + * Returns a end Label id.
97 + *
98 + * @return end Label id
99 + */
100 + public LabelResourceId endLabel() {
101 + return endLabel;
102 + }
103 +
104 + /**
105 + * Returns a begin Label id.
106 + *
107 + * @return current Used Maximal Label Id
108 + */
109 + public LabelResourceId currentUsedMaxLabelId() {
110 + return currentUsedMaxLabelId;
111 + }
112 +
113 + /**
114 + * Returns total number.
115 + *
116 + * @return the total label number
117 + */
118 + public long totalNum() {
119 + return totalNum;
120 + }
121 +
122 + /**
123 + * Returns used number.
124 + *
125 + * @return the used label number
126 + */
127 + public long usedNum() {
128 + return usedNum;
129 + }
130 +
131 + /**
132 + * Returns the Set of released label before.
133 + *
134 + * @return the Set of LabelResource
135 + */
136 + public Set<LabelResource> releaseLabelId() {
137 + return releaseLabelId;
138 + }
139 +
140 + @Override
141 + public int hashCode() {
142 + return Objects.hash(this.deviceId, this.beginLabel, this.endLabel,
143 + this.totalNum, this.usedNum,
144 + this.currentUsedMaxLabelId, this.releaseLabelId);
145 + }
146 +
147 + @Override
148 + public boolean equals(Object obj) {
149 + if (obj instanceof LabelResourcePool) {
150 + LabelResourcePool that = (LabelResourcePool) obj;
151 + return Objects.equals(this.deviceId, that.deviceId)
152 + && Objects.equals(this.beginLabel, that.beginLabel)
153 + && Objects.equals(this.endLabel, that.endLabel)
154 + && Objects.equals(this.totalNum, that.totalNum)
155 + && Objects.equals(this.usedNum, that.usedNum)
156 + && Objects.equals(this.currentUsedMaxLabelId,
157 + that.currentUsedMaxLabelId)
158 + && Objects.equals(this.releaseLabelId, that.releaseLabelId);
159 + }
160 + return false;
161 + }
162 +
163 + @Override
164 + public String toString() {
165 + // TODO Auto-generated method stub
166 + return MoreObjects.toStringHelper(this).add("deviceId", this.deviceId)
167 + .add("beginLabel", this.beginLabel)
168 + .add("endLabel", this.endLabel).add("totalNum", this.totalNum)
169 + .add("usedNum", this.usedNum)
170 + .add("currentUsedMaxLabelId", this.currentUsedMaxLabelId)
171 + .add("releaseLabelId", this.releaseLabelId).toString();
172 + }
173 +}
1 +package org.onosproject.net.resource;
2 +
3 +import org.onosproject.net.provider.Provider;
4 +/**
5 + * Abstraction of an entity providing information about label resource
6 + * to the core.
7 + */
8 +public interface LabelResourceProvider extends Provider {
9 +
10 +}
1 +package org.onosproject.net.resource;
2 +
3 +import org.onosproject.net.provider.ProviderRegistry;
4 +/**
5 + * Abstraction of an label resource provider registry.
6 + */
7 +public interface LabelResourceProviderRegistry
8 + extends ProviderRegistry<LabelResourceProvider, LabelResourceProviderService> {
9 +
10 +}
1 +package org.onosproject.net.resource;
2 +
3 +import org.onosproject.net.DeviceId;
4 +import org.onosproject.net.provider.ProviderService;
5 +
6 +/**
7 + * Means for injecting label information into the core.
8 + */
9 +public interface LabelResourceProviderService extends ProviderService<LabelResourceProvider> {
10 +
11 + /**
12 + * Signals that a device label resource pool has been detected.
13 + * @param deviceId device identifier
14 + * @param beginLabel the begin label number of resource
15 + * @param endLabel the end label number of resource
16 + */
17 + void deviceLabelResourcePoolDetected(DeviceId deviceId,
18 + LabelResourceId beginLabel,
19 + LabelResourceId endLabel);
20 +
21 + /**
22 + * Signals that an label resource pool has been destroyed.
23 + * @param deviceId device identifier
24 + */
25 + void deviceLabelResourcePoolDestroyed(DeviceId deviceId);
26 +}
1 +package org.onosproject.net.resource;
2 +
3 +import java.util.Collection;
4 +import java.util.Objects;
5 +
6 +import org.onosproject.net.DeviceId;
7 +
8 +import com.google.common.base.MoreObjects;
9 +import com.google.common.collect.ImmutableSet;
10 +/**
11 + * Represents for a label request.
12 + */
13 +public class LabelResourceRequest {
14 +
15 + private final DeviceId deviceId;
16 + private final Type type;
17 + private final long applyNum;
18 + private ImmutableSet<LabelResource> releaseCollection;
19 +
20 + /**
21 + * Creates LabelResourceRequest object.
22 + * @param deviceId device identifier
23 + * @param type request type
24 + * @param applyNum apply the number of labels
25 + * @param releaseCollection Set of released label
26 + */
27 + public LabelResourceRequest(DeviceId deviceId,
28 + Type type,
29 + long applyNum,
30 + ImmutableSet<LabelResource> releaseCollection) {
31 + this.deviceId = deviceId;
32 + this.type = type;
33 + this.applyNum = applyNum;
34 + this.releaseCollection = releaseCollection;
35 + }
36 + /**
37 + * Returns a device id.
38 + * @return DeviceId
39 + */
40 + public DeviceId deviceId() {
41 + return deviceId;
42 + }
43 +
44 + /**
45 + * Returns request type.
46 + * @return Type
47 + */
48 + public Type type() {
49 + return type;
50 + }
51 +
52 + /**
53 + * Returns apply label number.
54 + * @return label number
55 + */
56 + public long applyNum() {
57 + return applyNum;
58 + }
59 +
60 + /**
61 + * Returns the collection of release labels.
62 + * @return Collection of DefaultLabelResource
63 + */
64 + public Collection<LabelResource> releaseCollection() {
65 + return releaseCollection;
66 + }
67 +
68 + /**
69 + * Request type.
70 + */
71 + public enum Type {
72 + APPLY, //apple label request
73 + RELEASE //release label request
74 + }
75 +
76 + @Override
77 + public int hashCode() {
78 + return Objects.hash(this.deviceId, this.applyNum, this.type,
79 + this.releaseCollection);
80 + }
81 +
82 + @Override
83 + public boolean equals(Object obj) {
84 + if (obj instanceof LabelResourceRequest) {
85 + LabelResourceRequest that = (LabelResourceRequest) obj;
86 + return Objects.equals(this.deviceId, that.deviceId)
87 + && Objects.equals(this.applyNum, that.applyNum)
88 + && Objects.equals(this.type, that.type)
89 + && Objects.equals(this.releaseCollection,
90 + that.releaseCollection);
91 + }
92 + return false;
93 + }
94 +
95 + @Override
96 + public String toString() {
97 + return MoreObjects.toStringHelper(this).add("deviceId", this.deviceId)
98 + .add("applyNum", this.applyNum).add("type", this.type)
99 + .add("releaseCollection", this.releaseCollection).toString();
100 + }
101 +}
1 +package org.onosproject.net.resource;
2 +
3 +import java.util.Collection;
4 +import java.util.Set;
5 +
6 +import org.onosproject.net.DeviceId;
7 +
8 +import com.google.common.collect.Multimap;
9 +
10 +/**
11 + * Service for providing label resource allocation.
12 + */
13 +public interface LabelResourceService {
14 +
15 + /**
16 + * Returns labels from resource pool by a specific device id.
17 + *
18 + * @param deviceId device identifier
19 + * @param applyNum the applying number
20 + * @return collection of applying labels
21 + */
22 + Collection<LabelResource> applyFromDevicePool(DeviceId deviceId,
23 + long applyNum);
24 +
25 + /**
26 + * Returns labels from the global label resource pool.
27 + *
28 + * @param applyNum the applying number
29 + * @return collection of applying labels
30 + */
31 + Collection<LabelResource> applyFromGlobalPool(long applyNum);
32 +
33 + /**
34 + * Releases unused labels to device pools .
35 + *
36 + * @param release the collection of releasing labels
37 + * @return success or fail
38 + */
39 + boolean releaseToDevicePool(Multimap<DeviceId, LabelResource> release);
40 +
41 + /**
42 + * Releases unused labels to the global resource pool.
43 + *
44 + * @param release release the collection of releasing labels
45 + * @return success or fail
46 + */
47 + boolean releaseToGlobalPool(Set<LabelResourceId> release);
48 +
49 + /**
50 + * Judges if the pool of a specific device id is full.
51 + *
52 + * @param deviceId device identifier
53 + * @return yes or no
54 + */
55 + boolean isDevicePoolFull(DeviceId deviceId);
56 +
57 + /**
58 + * Judges if the global resource pool is full.
59 + *
60 + * @return yes or no
61 + */
62 + boolean isGlobalPoolFull();
63 +
64 + /**
65 + * Returns the unused label number of a label resource pool by a specific device
66 + * id.
67 + *
68 + * @param deviceId device identifier
69 + * @return number of unused labels
70 + */
71 + long getFreeNumOfDevicePool(DeviceId deviceId);
72 +
73 + /**
74 + * Returns the unused label number of a global label resource pool.
75 + *
76 + * @return number of unused labels
77 + */
78 + long getFreeNumOfGlobalPool();
79 +
80 + /**
81 + * Returns the label resource pool of a label resource by a specific device
82 + * id.
83 + *
84 + * @param deviceId device identifier
85 + * @return the device label resource pool
86 + */
87 + LabelResourcePool getDeviceLabelResourcePool(DeviceId deviceId);
88 +
89 + /**
90 + * Returns the global label resource pool.
91 + *
92 + * @return the global label resource pool
93 + */
94 + LabelResourcePool getGlobalLabelResourcePool();
95 +
96 + /**
97 + * Adds the specified label resource listener.
98 + *
99 + * @param listener label resource listener
100 + */
101 + void addListener(LabelResourceListener listener);
102 +
103 + /**
104 + * Removes the specified label resource listener.
105 + *
106 + * @param listener label resource listener
107 + */
108 + void removeListener(LabelResourceListener listener);
109 +}
1 +package org.onosproject.net.resource;
2 +
3 +import java.util.Collection;
4 +import java.util.Set;
5 +
6 +import org.onosproject.net.DeviceId;
7 +import org.onosproject.store.Store;
8 +
9 +import com.google.common.collect.Multimap;
10 +
11 +/**
12 + * Manages inventory of label; not intended for direct use.
13 + *
14 + */
15 +public interface LabelResourceStore
16 + extends Store<LabelResourceEvent, LabelResourceDelegate> {
17 +
18 + /**
19 + * Creates a label resource of some device id from begin label to end label.
20 + *
21 + * @param deviceId device identifier
22 + * @param beginLabel represents for the first label id in the range of label
23 + * pool
24 + * @param endLabel represents for the last label id in the range of label
25 + * pool
26 + * @return success or fail
27 + */
28 + boolean createDevicePool(DeviceId deviceId, LabelResourceId beginLabel,
29 + LabelResourceId endLabel);
30 +
31 + /**
32 + * Creates the global label resource pool.
33 + *
34 + * @param beginLabel represents for the first label id in the range of label
35 + * pool
36 + * @param endLabel represents for the last label id in the range of label
37 + * pool
38 + * @return success or fail
39 + */
40 + boolean createGlobalPool(LabelResourceId beginLabel,
41 + LabelResourceId endLabel);
42 +
43 + /**
44 + * Destroys a label resource pool of a specific device id.
45 + *
46 + * @param deviceId device identifier
47 + * @return success or fail
48 + */
49 + boolean destroyDevicePool(DeviceId deviceId);
50 +
51 + /**
52 + * Destroys a the global label resource pool.
53 + *
54 + * @return success or fail
55 + */
56 + boolean destroyGlobalPool();
57 +
58 + /**
59 + * Returns labels from resource pool by a specific device id.
60 + *
61 + * @param deviceId device identifier
62 + * @param applyNum the applying number
63 + * @return collection of applying labels
64 + */
65 + Collection<LabelResource> applyFromDevicePool(DeviceId deviceId,
66 + long applyNum);
67 +
68 + /**
69 + * Returns labels from the global label resource pool.
70 + *
71 + * @param applyNum apply the number of labels
72 + * @return collection of labels
73 + */
74 + Collection<LabelResource> applyFromGlobalPool(long applyNum);
75 +
76 + /**
77 + * Releases unused labels to device pools .
78 + *
79 + * @param release the collection of releasing labels
80 + * @return success or fail
81 + */
82 + boolean releaseToDevicePool(Multimap<DeviceId, LabelResource> release);
83 +
84 + /**
85 + * Releases unused labels to the global resource pool.
86 + *
87 + * @param release release the collection of releasing labels
88 + * @return success or fail
89 + */
90 + boolean releaseToGlobalPool(Set<LabelResourceId> release);
91 +
92 + /**
93 + * Judges if the pool of a specific device id is full.
94 + *
95 + * @param deviceId device identifier
96 + * @return yes or no
97 + */
98 + boolean isDevicePoolFull(DeviceId deviceId);
99 +
100 + /**
101 + * Judges if the global resource pool is full.
102 + *
103 + * @return yes or no
104 + */
105 + boolean isGlobalPoolFull();
106 +
107 + /**
108 + * Returns the unused label number of a label resource pool by a specific device
109 + * id.
110 + *
111 + * @param deviceId device identifier
112 + * @return number of unused labels
113 + */
114 + long getFreeNumOfDevicePool(DeviceId deviceId);
115 +
116 + /**
117 + * Returns the unused number of a global label resource pool.
118 + *
119 + * @return number of unused labels
120 + */
121 + long getFreeNumOfGlobalPool();
122 +
123 + /**
124 + * Returns the label resource pool by a specific device id.
125 + *
126 + * @param deviceId device identifier
127 + * @return the device label resource pool
128 + */
129 + LabelResourcePool getDeviceLabelResourcePool(DeviceId deviceId);
130 +
131 + /**
132 + * Returns the global label resource pool.
133 + *
134 + * @return the global label resource pool
135 + */
136 + LabelResourcePool getGlobalLabelResourcePool();
137 +}