Committed by
Gerrit Code Review
[FALCON] adding api to enable packet requests to a single device.
Change-Id: Id870c13ece658fe61f46194c1e795fb1d209a6a8
Showing
6 changed files
with
144 additions
and
19 deletions
| ... | @@ -19,9 +19,11 @@ import com.google.common.base.MoreObjects; | ... | @@ -19,9 +19,11 @@ import com.google.common.base.MoreObjects; |
| 19 | 19 | ||
| 20 | import org.onosproject.cluster.NodeId; | 20 | import org.onosproject.cluster.NodeId; |
| 21 | import org.onosproject.core.ApplicationId; | 21 | import org.onosproject.core.ApplicationId; |
| 22 | +import org.onosproject.net.DeviceId; | ||
| 22 | import org.onosproject.net.flow.TrafficSelector; | 23 | import org.onosproject.net.flow.TrafficSelector; |
| 23 | 24 | ||
| 24 | import java.util.Objects; | 25 | import java.util.Objects; |
| 26 | +import java.util.Optional; | ||
| 25 | 27 | ||
| 26 | /** | 28 | /** |
| 27 | * Default implementation of a packet request. | 29 | * Default implementation of a packet request. |
| ... | @@ -31,22 +33,24 @@ public final class DefaultPacketRequest implements PacketRequest { | ... | @@ -31,22 +33,24 @@ public final class DefaultPacketRequest implements PacketRequest { |
| 31 | private final PacketPriority priority; | 33 | private final PacketPriority priority; |
| 32 | private final ApplicationId appId; | 34 | private final ApplicationId appId; |
| 33 | private final NodeId nodeId; | 35 | private final NodeId nodeId; |
| 36 | + private final Optional<DeviceId> deviceId; | ||
| 37 | + | ||
| 34 | 38 | ||
| 35 | /** | 39 | /** |
| 36 | * Creates a new packet request. | 40 | * Creates a new packet request. |
| 37 | - * | 41 | + * @param selector traffic selector |
| 38 | - * @param selector traffic selector | ||
| 39 | * @param priority intercept priority | 42 | * @param priority intercept priority |
| 40 | * @param appId application id | 43 | * @param appId application id |
| 41 | * @param nodeId identifier of node where request originated | 44 | * @param nodeId identifier of node where request originated |
| 45 | + * @param deviceId device id | ||
| 42 | */ | 46 | */ |
| 43 | public DefaultPacketRequest(TrafficSelector selector, PacketPriority priority, | 47 | public DefaultPacketRequest(TrafficSelector selector, PacketPriority priority, |
| 44 | - ApplicationId appId, | 48 | + ApplicationId appId, NodeId nodeId, Optional<DeviceId> deviceId) { |
| 45 | - NodeId nodeId) { | ||
| 46 | this.selector = selector; | 49 | this.selector = selector; |
| 47 | this.priority = priority; | 50 | this.priority = priority; |
| 48 | this.appId = appId; | 51 | this.appId = appId; |
| 49 | this.nodeId = nodeId; | 52 | this.nodeId = nodeId; |
| 53 | + this.deviceId = deviceId; | ||
| 50 | } | 54 | } |
| 51 | 55 | ||
| 52 | @Override | 56 | @Override |
| ... | @@ -64,6 +68,10 @@ public final class DefaultPacketRequest implements PacketRequest { | ... | @@ -64,6 +68,10 @@ public final class DefaultPacketRequest implements PacketRequest { |
| 64 | return appId; | 68 | return appId; |
| 65 | } | 69 | } |
| 66 | 70 | ||
| 71 | + public Optional<DeviceId> deviceId() { | ||
| 72 | + return deviceId; | ||
| 73 | + } | ||
| 74 | + | ||
| 67 | @Override | 75 | @Override |
| 68 | public NodeId nodeId() { | 76 | public NodeId nodeId() { |
| 69 | return nodeId; | 77 | return nodeId; |
| ... | @@ -71,7 +79,7 @@ public final class DefaultPacketRequest implements PacketRequest { | ... | @@ -71,7 +79,7 @@ public final class DefaultPacketRequest implements PacketRequest { |
| 71 | 79 | ||
| 72 | @Override | 80 | @Override |
| 73 | public int hashCode() { | 81 | public int hashCode() { |
| 74 | - return Objects.hash(selector, priority, appId, nodeId); | 82 | + return Objects.hash(selector, priority, appId, nodeId, deviceId); |
| 75 | } | 83 | } |
| 76 | 84 | ||
| 77 | @Override | 85 | @Override |
| ... | @@ -86,7 +94,8 @@ public final class DefaultPacketRequest implements PacketRequest { | ... | @@ -86,7 +94,8 @@ public final class DefaultPacketRequest implements PacketRequest { |
| 86 | return Objects.equals(this.selector, other.selector) | 94 | return Objects.equals(this.selector, other.selector) |
| 87 | && Objects.equals(this.priority, other.priority) | 95 | && Objects.equals(this.priority, other.priority) |
| 88 | && Objects.equals(this.appId, other.appId) | 96 | && Objects.equals(this.appId, other.appId) |
| 89 | - && Objects.equals(this.nodeId, other.nodeId); | 97 | + && Objects.equals(this.nodeId, other.nodeId) |
| 98 | + && Objects.equals(this.deviceId, other.deviceId); | ||
| 90 | } | 99 | } |
| 91 | 100 | ||
| 92 | @Override | 101 | @Override |
| ... | @@ -95,6 +104,8 @@ public final class DefaultPacketRequest implements PacketRequest { | ... | @@ -95,6 +104,8 @@ public final class DefaultPacketRequest implements PacketRequest { |
| 95 | .add("selector", selector) | 104 | .add("selector", selector) |
| 96 | .add("priority", priority) | 105 | .add("priority", priority) |
| 97 | .add("appId", appId) | 106 | .add("appId", appId) |
| 98 | - .add("nodeId", nodeId).toString(); | 107 | + .add("nodeId", nodeId) |
| 108 | + .add("applies to", deviceId.isPresent() ? deviceId.get() : "all") | ||
| 109 | + .toString(); | ||
| 99 | } | 110 | } |
| 100 | } | 111 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -17,8 +17,11 @@ package org.onosproject.net.packet; | ... | @@ -17,8 +17,11 @@ package org.onosproject.net.packet; |
| 17 | 17 | ||
| 18 | import org.onosproject.cluster.NodeId; | 18 | import org.onosproject.cluster.NodeId; |
| 19 | import org.onosproject.core.ApplicationId; | 19 | import org.onosproject.core.ApplicationId; |
| 20 | +import org.onosproject.net.DeviceId; | ||
| 20 | import org.onosproject.net.flow.TrafficSelector; | 21 | import org.onosproject.net.flow.TrafficSelector; |
| 21 | 22 | ||
| 23 | +import java.util.Optional; | ||
| 24 | + | ||
| 22 | /** | 25 | /** |
| 23 | * Represents a packet request made to devices. | 26 | * Represents a packet request made to devices. |
| 24 | */ | 27 | */ |
| ... | @@ -51,4 +54,12 @@ public interface PacketRequest { | ... | @@ -51,4 +54,12 @@ public interface PacketRequest { |
| 51 | * @return an node id | 54 | * @return an node id |
| 52 | */ | 55 | */ |
| 53 | NodeId nodeId(); | 56 | NodeId nodeId(); |
| 57 | + | ||
| 58 | + /** | ||
| 59 | + * Obtains the optional device id. | ||
| 60 | + * | ||
| 61 | + * @return an optional containing a device id | ||
| 62 | + */ | ||
| 63 | + Optional<DeviceId> deviceId(); | ||
| 64 | + | ||
| 54 | } | 65 | } | ... | ... |
| ... | @@ -17,9 +17,11 @@ package org.onosproject.net.packet; | ... | @@ -17,9 +17,11 @@ package org.onosproject.net.packet; |
| 17 | 17 | ||
| 18 | import com.google.common.annotations.Beta; | 18 | import com.google.common.annotations.Beta; |
| 19 | import org.onosproject.core.ApplicationId; | 19 | import org.onosproject.core.ApplicationId; |
| 20 | +import org.onosproject.net.DeviceId; | ||
| 20 | import org.onosproject.net.flow.TrafficSelector; | 21 | import org.onosproject.net.flow.TrafficSelector; |
| 21 | 22 | ||
| 22 | import java.util.List; | 23 | import java.util.List; |
| 24 | +import java.util.Optional; | ||
| 23 | 25 | ||
| 24 | /** | 26 | /** |
| 25 | * Service for intercepting data plane packets and for emitting synthetic | 27 | * Service for intercepting data plane packets and for emitting synthetic |
| ... | @@ -66,9 +68,25 @@ public interface PacketService { | ... | @@ -66,9 +68,25 @@ public interface PacketService { |
| 66 | * @param priority the priority of the rule | 68 | * @param priority the priority of the rule |
| 67 | * @param appId the application ID of the requester | 69 | * @param appId the application ID of the requester |
| 68 | */ | 70 | */ |
| 71 | + @Deprecated | ||
| 69 | void requestPackets(TrafficSelector selector, PacketPriority priority, | 72 | void requestPackets(TrafficSelector selector, PacketPriority priority, |
| 70 | ApplicationId appId); | 73 | ApplicationId appId); |
| 71 | 74 | ||
| 75 | + | ||
| 76 | + /** | ||
| 77 | + * Requests that packets matching the given selector are punted from the | ||
| 78 | + * dataplane to the controller. If a deviceId is specified then the | ||
| 79 | + * packet request is only installed at the device represented by that | ||
| 80 | + * deviceId. | ||
| 81 | + * | ||
| 82 | + * @param selector the traffic selector used to match packets | ||
| 83 | + * @param priority the priority of the rule | ||
| 84 | + * @param appId the application ID of the requester | ||
| 85 | + * @param deviceId an optional deviceId | ||
| 86 | + */ | ||
| 87 | + void requestPackets(TrafficSelector selector, PacketPriority priority, | ||
| 88 | + ApplicationId appId, Optional<DeviceId> deviceId); | ||
| 89 | + | ||
| 72 | /** | 90 | /** |
| 73 | * Cancels previous packet requests for packets matching the given | 91 | * Cancels previous packet requests for packets matching the given |
| 74 | * selector to be punted from the dataplane to the controller. | 92 | * selector to be punted from the dataplane to the controller. |
| ... | @@ -77,10 +95,26 @@ public interface PacketService { | ... | @@ -77,10 +95,26 @@ public interface PacketService { |
| 77 | * @param priority the priority of the rule | 95 | * @param priority the priority of the rule |
| 78 | * @param appId the application ID of the requester | 96 | * @param appId the application ID of the requester |
| 79 | */ | 97 | */ |
| 98 | + @Deprecated | ||
| 80 | void cancelPackets(TrafficSelector selector, PacketPriority priority, | 99 | void cancelPackets(TrafficSelector selector, PacketPriority priority, |
| 81 | ApplicationId appId); | 100 | ApplicationId appId); |
| 82 | 101 | ||
| 83 | /** | 102 | /** |
| 103 | + * Cancels previous packet requests for packets matching the given | ||
| 104 | + * selector to be punted from the dataplane to the controller. If a | ||
| 105 | + * deviceId is specified then the packet request is only withdrawn from | ||
| 106 | + * the device represented by that deviceId. | ||
| 107 | + * | ||
| 108 | + * @param selector the traffic selector used to match packets | ||
| 109 | + * @param priority the priority of the rule | ||
| 110 | + * @param appId the application ID of the requester | ||
| 111 | + * @param deviceId an optional deviceId | ||
| 112 | + */ | ||
| 113 | + void cancelPackets(TrafficSelector selector, PacketPriority priority, | ||
| 114 | + ApplicationId appId, Optional<DeviceId> deviceId); | ||
| 115 | + | ||
| 116 | + | ||
| 117 | + /** | ||
| 84 | * Returns list of all existing requests ordered by priority. | 118 | * Returns list of all existing requests ordered by priority. |
| 85 | * | 119 | * |
| 86 | * @return list of existing packet requests | 120 | * @return list of existing packet requests | ... | ... |
| ... | @@ -24,6 +24,8 @@ import org.onosproject.net.flow.TrafficSelector; | ... | @@ -24,6 +24,8 @@ import org.onosproject.net.flow.TrafficSelector; |
| 24 | 24 | ||
| 25 | import com.google.common.testing.EqualsTester; | 25 | import com.google.common.testing.EqualsTester; |
| 26 | 26 | ||
| 27 | +import java.util.Optional; | ||
| 28 | + | ||
| 27 | import static org.hamcrest.MatcherAssert.assertThat; | 29 | import static org.hamcrest.MatcherAssert.assertThat; |
| 28 | import static org.hamcrest.Matchers.is; | 30 | import static org.hamcrest.Matchers.is; |
| 29 | import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; | 31 | import static org.onlab.junit.ImmutableClassChecker.assertThatClassIsImmutable; |
| ... | @@ -42,27 +44,27 @@ public class DefaultPacketRequestTest { | ... | @@ -42,27 +44,27 @@ public class DefaultPacketRequestTest { |
| 42 | new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), | 44 | new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), |
| 43 | PacketPriority.CONTROL, | 45 | PacketPriority.CONTROL, |
| 44 | NetTestTools.APP_ID, | 46 | NetTestTools.APP_ID, |
| 45 | - NetTestTools.NODE_ID); | 47 | + NetTestTools.NODE_ID, Optional.empty()); |
| 46 | private final DefaultPacketRequest sameAsacketRequest1 = | 48 | private final DefaultPacketRequest sameAsacketRequest1 = |
| 47 | new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), | 49 | new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), |
| 48 | PacketPriority.CONTROL, | 50 | PacketPriority.CONTROL, |
| 49 | NetTestTools.APP_ID, | 51 | NetTestTools.APP_ID, |
| 50 | - NetTestTools.NODE_ID); | 52 | + NetTestTools.NODE_ID, Optional.empty()); |
| 51 | private final DefaultPacketRequest packetRequest2 = | 53 | private final DefaultPacketRequest packetRequest2 = |
| 52 | new DefaultPacketRequest(selector, | 54 | new DefaultPacketRequest(selector, |
| 53 | PacketPriority.CONTROL, | 55 | PacketPriority.CONTROL, |
| 54 | NetTestTools.APP_ID, | 56 | NetTestTools.APP_ID, |
| 55 | - NetTestTools.NODE_ID); | 57 | + NetTestTools.NODE_ID, Optional.empty()); |
| 56 | private final DefaultPacketRequest packetRequest3 = | 58 | private final DefaultPacketRequest packetRequest3 = |
| 57 | new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), | 59 | new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), |
| 58 | PacketPriority.REACTIVE, | 60 | PacketPriority.REACTIVE, |
| 59 | NetTestTools.APP_ID, | 61 | NetTestTools.APP_ID, |
| 60 | - NetTestTools.NODE_ID); | 62 | + NetTestTools.NODE_ID, Optional.empty()); |
| 61 | private final DefaultPacketRequest packetRequest4 = | 63 | private final DefaultPacketRequest packetRequest4 = |
| 62 | new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), | 64 | new DefaultPacketRequest(DefaultTrafficSelector.emptySelector(), |
| 63 | PacketPriority.CONTROL, | 65 | PacketPriority.CONTROL, |
| 64 | new DefaultApplicationId(1, "foo"), | 66 | new DefaultApplicationId(1, "foo"), |
| 65 | - new NodeId("node1")); | 67 | + new NodeId("node1"), Optional.empty()); |
| 66 | 68 | ||
| 67 | /** | 69 | /** |
| 68 | * Tests the operation of the equals(), toAstring() and hashCode() methods. | 70 | * Tests the operation of the equals(), toAstring() and hashCode() methods. | ... | ... |
| ... | @@ -16,9 +16,11 @@ | ... | @@ -16,9 +16,11 @@ |
| 16 | package org.onosproject.net.packet; | 16 | package org.onosproject.net.packet; |
| 17 | 17 | ||
| 18 | import org.onosproject.core.ApplicationId; | 18 | import org.onosproject.core.ApplicationId; |
| 19 | +import org.onosproject.net.DeviceId; | ||
| 19 | import org.onosproject.net.flow.TrafficSelector; | 20 | import org.onosproject.net.flow.TrafficSelector; |
| 20 | 21 | ||
| 21 | import java.util.List; | 22 | import java.util.List; |
| 23 | +import java.util.Optional; | ||
| 22 | 24 | ||
| 23 | /** | 25 | /** |
| 24 | * Test adapter for packet service. | 26 | * Test adapter for packet service. |
| ... | @@ -43,11 +45,25 @@ public class PacketServiceAdapter implements PacketService { | ... | @@ -43,11 +45,25 @@ public class PacketServiceAdapter implements PacketService { |
| 43 | } | 45 | } |
| 44 | 46 | ||
| 45 | @Override | 47 | @Override |
| 46 | - public void requestPackets(TrafficSelector selector, PacketPriority priority, ApplicationId appId) { | 48 | + public void requestPackets(TrafficSelector selector, PacketPriority priority, |
| 49 | + ApplicationId appId) { | ||
| 47 | } | 50 | } |
| 48 | 51 | ||
| 49 | @Override | 52 | @Override |
| 50 | - public void cancelPackets(TrafficSelector selector, PacketPriority priority, ApplicationId appId) { | 53 | + public void requestPackets(TrafficSelector selector, PacketPriority priority, |
| 54 | + ApplicationId appId, Optional<DeviceId> deviceId) { | ||
| 55 | + | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + @Override | ||
| 59 | + public void cancelPackets(TrafficSelector selector, PacketPriority priority, | ||
| 60 | + ApplicationId appId) { | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + @Override | ||
| 64 | + public void cancelPackets(TrafficSelector selector, PacketPriority priority, | ||
| 65 | + ApplicationId appId, Optional<DeviceId> deviceId) { | ||
| 66 | + | ||
| 51 | } | 67 | } |
| 52 | 68 | ||
| 53 | @Override | 69 | @Override | ... | ... |
| ... | @@ -29,6 +29,7 @@ import org.onosproject.cluster.NodeId; | ... | @@ -29,6 +29,7 @@ import org.onosproject.cluster.NodeId; |
| 29 | import org.onosproject.core.ApplicationId; | 29 | import org.onosproject.core.ApplicationId; |
| 30 | import org.onosproject.core.CoreService; | 30 | import org.onosproject.core.CoreService; |
| 31 | import org.onosproject.net.Device; | 31 | import org.onosproject.net.Device; |
| 32 | +import org.onosproject.net.DeviceId; | ||
| 32 | import org.onosproject.net.device.DeviceEvent; | 33 | import org.onosproject.net.device.DeviceEvent; |
| 33 | import org.onosproject.net.device.DeviceListener; | 34 | import org.onosproject.net.device.DeviceListener; |
| 34 | import org.onosproject.net.device.DeviceService; | 35 | import org.onosproject.net.device.DeviceService; |
| ... | @@ -60,6 +61,7 @@ import org.onosproject.net.provider.AbstractProviderService; | ... | @@ -60,6 +61,7 @@ import org.onosproject.net.provider.AbstractProviderService; |
| 60 | import org.slf4j.Logger; | 61 | import org.slf4j.Logger; |
| 61 | 62 | ||
| 62 | import java.util.List; | 63 | import java.util.List; |
| 64 | +import java.util.Optional; | ||
| 63 | import java.util.concurrent.ExecutorService; | 65 | import java.util.concurrent.ExecutorService; |
| 64 | import java.util.concurrent.Executors; | 66 | import java.util.concurrent.Executors; |
| 65 | 67 | ||
| ... | @@ -175,18 +177,49 @@ public class PacketManager | ... | @@ -175,18 +177,49 @@ public class PacketManager |
| 175 | checkNotNull(selector, "Selector cannot be null"); | 177 | checkNotNull(selector, "Selector cannot be null"); |
| 176 | checkNotNull(appId, "Application ID cannot be null"); | 178 | checkNotNull(appId, "Application ID cannot be null"); |
| 177 | 179 | ||
| 178 | - PacketRequest request = new DefaultPacketRequest(selector, priority, appId, localNodeId); | 180 | + PacketRequest request = new DefaultPacketRequest(selector, priority, appId, |
| 181 | + localNodeId, Optional.empty()); | ||
| 179 | store.requestPackets(request); | 182 | store.requestPackets(request); |
| 180 | } | 183 | } |
| 181 | 184 | ||
| 182 | @Override | 185 | @Override |
| 186 | + public void requestPackets(TrafficSelector selector, PacketPriority priority, | ||
| 187 | + ApplicationId appId, Optional<DeviceId> deviceId) { | ||
| 188 | + checkPermission(PACKET_READ); | ||
| 189 | + checkNotNull(selector, "Selector cannot be null"); | ||
| 190 | + checkNotNull(appId, "Application ID cannot be null"); | ||
| 191 | + | ||
| 192 | + PacketRequest request = | ||
| 193 | + new DefaultPacketRequest(selector, priority, appId, | ||
| 194 | + localNodeId, deviceId); | ||
| 195 | + | ||
| 196 | + store.requestPackets(request); | ||
| 197 | + | ||
| 198 | + } | ||
| 199 | + | ||
| 200 | + @Override | ||
| 183 | public void cancelPackets(TrafficSelector selector, PacketPriority priority, | 201 | public void cancelPackets(TrafficSelector selector, PacketPriority priority, |
| 184 | ApplicationId appId) { | 202 | ApplicationId appId) { |
| 185 | checkPermission(PACKET_READ); | 203 | checkPermission(PACKET_READ); |
| 186 | checkNotNull(selector, "Selector cannot be null"); | 204 | checkNotNull(selector, "Selector cannot be null"); |
| 187 | checkNotNull(appId, "Application ID cannot be null"); | 205 | checkNotNull(appId, "Application ID cannot be null"); |
| 188 | 206 | ||
| 189 | - PacketRequest request = new DefaultPacketRequest(selector, priority, appId, localNodeId); | 207 | + |
| 208 | + PacketRequest request = new DefaultPacketRequest(selector, priority, appId, | ||
| 209 | + localNodeId, Optional.empty()); | ||
| 210 | + store.cancelPackets(request); | ||
| 211 | + } | ||
| 212 | + | ||
| 213 | + @Override | ||
| 214 | + public void cancelPackets(TrafficSelector selector, PacketPriority priority, | ||
| 215 | + ApplicationId appId, Optional<DeviceId> deviceId) { | ||
| 216 | + checkPermission(PACKET_READ); | ||
| 217 | + checkNotNull(selector, "Selector cannot be null"); | ||
| 218 | + checkNotNull(appId, "Application ID cannot be null"); | ||
| 219 | + | ||
| 220 | + PacketRequest request = new DefaultPacketRequest(selector, priority, | ||
| 221 | + appId, localNodeId, | ||
| 222 | + deviceId); | ||
| 190 | store.cancelPackets(request); | 223 | store.cancelPackets(request); |
| 191 | } | 224 | } |
| 192 | 225 | ||
| ... | @@ -203,7 +236,12 @@ public class PacketManager | ... | @@ -203,7 +236,12 @@ public class PacketManager |
| 203 | private void pushRulesToDevice(Device device) { | 236 | private void pushRulesToDevice(Device device) { |
| 204 | log.debug("Pushing packet requests to device {}", device.id()); | 237 | log.debug("Pushing packet requests to device {}", device.id()); |
| 205 | for (PacketRequest request : store.existingRequests()) { | 238 | for (PacketRequest request : store.existingRequests()) { |
| 206 | - pushRule(device, request); | 239 | + if (!request.deviceId().isPresent()) { |
| 240 | + pushRule(device, request); | ||
| 241 | + } else if (request.deviceId().get().equals(device.id())) { | ||
| 242 | + pushRule(device, request); | ||
| 243 | + } | ||
| 244 | + | ||
| 207 | } | 245 | } |
| 208 | } | 246 | } |
| 209 | 247 | ||
| ... | @@ -332,6 +370,7 @@ public class PacketManager | ... | @@ -332,6 +370,7 @@ public class PacketManager |
| 332 | 370 | ||
| 333 | } | 371 | } |
| 334 | 372 | ||
| 373 | + | ||
| 335 | /** | 374 | /** |
| 336 | * Internal callback from the packet store. | 375 | * Internal callback from the packet store. |
| 337 | */ | 376 | */ |
| ... | @@ -343,12 +382,24 @@ public class PacketManager | ... | @@ -343,12 +382,24 @@ public class PacketManager |
| 343 | 382 | ||
| 344 | @Override | 383 | @Override |
| 345 | public void requestPackets(PacketRequest request) { | 384 | public void requestPackets(PacketRequest request) { |
| 346 | - pushToAllDevices(request); | 385 | + DeviceId deviceid = request.deviceId().orElse(null); |
| 386 | + | ||
| 387 | + if (deviceid != null) { | ||
| 388 | + pushRule(deviceService.getDevice(deviceid), request); | ||
| 389 | + } else { | ||
| 390 | + pushToAllDevices(request); | ||
| 391 | + } | ||
| 347 | } | 392 | } |
| 348 | 393 | ||
| 349 | @Override | 394 | @Override |
| 350 | public void cancelPackets(PacketRequest request) { | 395 | public void cancelPackets(PacketRequest request) { |
| 351 | - removeFromAllDevices(request); | 396 | + DeviceId deviceid = request.deviceId().orElse(null); |
| 397 | + | ||
| 398 | + if (deviceid != null) { | ||
| 399 | + removeRule(deviceService.getDevice(deviceid), request); | ||
| 400 | + } else { | ||
| 401 | + removeFromAllDevices(request); | ||
| 402 | + } | ||
| 352 | } | 403 | } |
| 353 | } | 404 | } |
| 354 | 405 | ... | ... |
-
Please register or login to post a comment