private void pingServer() { Request request = Request.newBuilder().build(); request.setReplyTo(replyToTopic); request.setType(RequestType.ping);
.withBody(subscribeRequest) .withPartitionKey(subscribeRequest.getFilter().getFirstKey()) .withSingleReply(false) .build(); rpcClient.call(request, responseConsumer); return future;
private void pingServer() { Request request = Request.newBuilder().build(); request.setReplyTo(replyToTopic); request.setType(RequestType.ping);
private void pingServer() { Request request = Request.newBuilder().build(); request.setReplyTo(replyToTopic); request.setType(RequestType.ping);
futures.add(future); Request request = Request.newBuilder() .withBody(sr) .withPartitionKey(sr.getFilter().getFirstKey()) .withSingleReply(false) .build(); rpcClient.call(request, responseConsumer);
private void pingServer() { Request request = Request.newBuilder().build(); request.setReplyTo(replyToTopic); request.setType(RequestType.ping);
public CompletableFuture<Void> update(DeviceCommand cmd, DeviceCommandUpdate commandUpdate) { hiveValidator.validate(commandUpdate); if (cmd == null) { throw new NoSuchElementException("Command not found"); } cmd.setIsUpdated(true); cmd.setLastUpdated(timestampService.getDate()); if (commandUpdate.getStatus().isPresent()) { cmd.setStatus(commandUpdate.getStatus().get()); } if (commandUpdate.getResult().isPresent()) { cmd.setResult(commandUpdate.getResult().get()); } hiveValidator.validate(cmd); CompletableFuture<Response> commandUpdateFuture = new CompletableFuture<>(); rpcClient.call(Request.newBuilder() .withBody(new CommandUpdateRequest(cmd)) .build(), new ResponseConsumer(commandUpdateFuture)); CompletableFuture<Response> commandsUpdateFuture = new CompletableFuture<>(); rpcClient.call(Request.newBuilder() .withBody(new CommandsUpdateRequest(cmd)) .build(), new ResponseConsumer(commandsUpdateFuture)); return CompletableFuture.allOf(commandUpdateFuture, commandsUpdateFuture).thenApply(response -> null); }
public CompletableFuture<List<DeviceCommand>> find(Collection<String> deviceIds, Collection<String> names, Date timestampSt, Date timestampEnd, String status, String sortField, String sortOrder, Integer take, Integer skip) { CommandSearchRequest searchRequest = new CommandSearchRequest(); searchRequest.setDeviceIds(Sets.newHashSet(deviceIds)); if (names != null) { searchRequest.setNames(Sets.newHashSet(names)); } searchRequest.setTimestampStart(timestampSt); searchRequest.setTimestampEnd(timestampEnd); searchRequest.setStatus(status); searchRequest.setSortField(sortField); searchRequest.setSortOrder(sortOrder); searchRequest.setTake(take); searchRequest.setSkip(skip); CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request.newBuilder() .withBody(searchRequest) .withPartitionKey(searchRequest.getDeviceId()) .build(), new ResponseConsumer(future)); // CompletableFuture<Response> => CompletableFuture<List<DeviceCommand>> return future.thenApply(v -> v.getBody().cast(CommandSearchResponse.class).getCommands()); }
@Transactional public boolean deleteDevice(@NotNull String deviceId) { DeviceVO deviceVO = deviceDao.findById(deviceId); if (deviceVO == null) { logger.error("Device with ID {} not found", deviceId); return false; } DeviceDeleteRequest deviceDeleteRequest = new DeviceDeleteRequest(deviceVO); Request request = Request.newBuilder() .withBody(deviceDeleteRequest) .build(); CompletableFuture<String> future = new CompletableFuture<>(); Consumer<Response> responseConsumer = response -> { Action resAction = response.getBody().getAction(); if (resAction.equals(Action.DEVICE_DELETE_RESPONSE)) { future.complete(response.getBody().getAction().name()); } else { logger.warn("Unknown action received from backend {}", resAction); } }; rpcClient.call(request, responseConsumer); return deviceDao.deleteById(deviceId) != 0; }
public CompletableFuture<Pair<Long, DeviceCommand>> sendSubscribeToUpdateRequest(final long commandId, final DeviceVO device, BiConsumer<DeviceCommand, Long> callback) { CompletableFuture<Pair<Long, DeviceCommand>> future = new CompletableFuture<>(); final Long subscriptionId = idGenerator.generate(); Consumer<Response> responseConsumer = response -> { Action resAction = response.getBody().getAction(); if (resAction.equals(Action.COMMAND_UPDATE_SUBSCRIBE_RESPONSE)) { future.complete(Pair.of(response.getBody().cast(CommandUpdateSubscribeResponse.class).getSubscriptionId(), response.getBody().cast(CommandUpdateSubscribeResponse.class).getDeviceCommand())); } else if (resAction.equals(COMMAND_UPDATE_EVENT)) { callback.accept(response.getBody().cast(CommandUpdateEvent.class).getDeviceCommand(), subscriptionId); } else { logger.warn("Unknown action received from backend {}", resAction); } }; Filter filter = new Filter(device.getNetworkId(), device.getDeviceTypeId(), Long.toString(commandId), COMMAND_UPDATE_EVENT.name(), null); rpcClient.call(Request.newBuilder() .withBody(new CommandUpdateSubscribeRequest(commandId, device.getDeviceId(), subscriptionId, filter)) .build(), responseConsumer); return future; }
public CompletableFuture<Set<Long>> sendUnsubscribeRequest(Set<Long> subIds) { CommandUnsubscribeRequest unsubscribeRequest = new CommandUnsubscribeRequest(subIds); Request request = Request.newBuilder() .withBody(unsubscribeRequest) .build(); CompletableFuture<Set<Long>> future = new CompletableFuture<>(); Consumer<Response> responseConsumer = response -> { Action resAction = response.getBody().getAction(); if (resAction.equals(Action.COMMAND_UNSUBSCRIBE_RESPONSE)) { future.complete(response.getBody().cast(CommandUnsubscribeResponse.class).getSubscriptionIds()); subIds.forEach(requestResponseMatcher::removeSubscription); } else { logger.warn("Unknown action received from backend {}", resAction); } }; rpcClient.call(request, responseConsumer); return future; }
@SuppressWarnings("unchecked") public CompletableFuture<List<DeviceNotification>> find(Set<String> deviceIds, Set<String> names, Date timestampSt, Date timestampEnd, String sortField, String sortOrder, Integer take, Integer skip) { NotificationSearchRequest searchRequest = new NotificationSearchRequest(); searchRequest.setDeviceIds(deviceIds); searchRequest.setNames(names); searchRequest.setTimestampStart(timestampSt); searchRequest.setTimestampEnd(timestampEnd); searchRequest.setSortField(sortField); searchRequest.setSortOrder(sortOrder); searchRequest.setTake(take); searchRequest.setSkip(skip); CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request.newBuilder() .withBody(searchRequest) .withPartitionKey(searchRequest.getDeviceId()) .build(), new ResponseConsumer(future)); // CompletableFuture<Response> => CompletableFuture<List<DeviceNotification>> return future.thenApply(v -> v.getBody().cast(NotificationSearchResponse.class).getNotifications()); }
public CompletableFuture<Set<Long>> unsubscribe(Set<Long> subIds) { NotificationUnsubscribeRequest unsubscribeRequest = new NotificationUnsubscribeRequest(subIds); Request request = Request.newBuilder() .withBody(unsubscribeRequest) .build(); CompletableFuture<Set<Long>> future = new CompletableFuture<>(); Consumer<Response> responseConsumer = response -> { Action resAction = response.getBody().getAction(); if (resAction.equals(Action.NOTIFICATION_UNSUBSCRIBE_RESPONSE)) { future.complete(response.getBody().cast(NotificationUnsubscribeResponse.class).getSubscriptionIds()); subIds.forEach(requestResponseMatcher::removeSubscription); } else { logger.warn("Unknown action received from backend {}", resAction); } }; rpcClient.call(request, responseConsumer); return future; }
public CompletableFuture<List<UserVO>> list(String login, String loginPattern, Integer role, Integer status, String sortField, String sortOrder, Integer take, Integer skip) { ListUserRequest request = new ListUserRequest(); request.setLogin(login); request.setLoginPattern(loginPattern); request.setRole(role); request.setStatus(status); request.setSortField(sortField); request.setSortOrder(sortOrder); request.setTake(take); request.setSkip(skip); CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request .newBuilder() .withBody(request) .build(), new ResponseConsumer(future)); return future.thenApply(r -> ((ListUserResponse) r.getBody()).getUsers()); }
@Transactional public CompletableFuture<Response> delete(PluginVO existingPlugin) { pluginService.delete(existingPlugin.getId()); CompletableFuture<com.devicehive.shim.api.Response> future = new CompletableFuture<>(); if (existingPlugin.getSubscriptionId() != null) { PluginUnsubscribeRequest request = new PluginUnsubscribeRequest(existingPlugin.getSubscriptionId(), existingPlugin.getTopicName()); rpcClient.call(Request.newBuilder() .withBody(request) .build(), new ResponseConsumer(future)); return future.thenApply(response -> ResponseFactory.response(NO_CONTENT)); } else { return CompletableFuture.completedFuture(ResponseFactory.response(NO_CONTENT)); } }
private List<Response> createNotificationSubscription(PluginSubscribeRequest body) { return body.getFilters().stream() .map(filter -> { filter.setEventName(NOTIFICATION_EVENT.name()); NotificationSubscribeRequest notificationSubscribeRequest = new NotificationSubscribeRequest( body.getSubscriptionId(), filter, body.getNames(), null); Request notificationRequest = Request.newBuilder() .withBody(notificationSubscribeRequest) .withSingleReply(false) .build(); notificationRequest.setReplyTo(body.getTopicName()); return notificationSubscribeRequestHandler.handle(notificationRequest); }).collect(toList()); }
public static <T extends Body> Builder<T> newBuilder() { return new Builder<>(); }
private List<Response> createCommandSubscription(PluginSubscribeRequest body, boolean returnUpdated) { return body.getFilters().stream() .map(filter -> { filter.setEventName(COMMAND_EVENT.name()); CommandSubscribeRequest commandSubscribeRequest = new CommandSubscribeRequest(body.getSubscriptionId(), filter, body.getNames(), null, returnUpdated, 0); Request commandRequest = Request.newBuilder() .withBody(commandSubscribeRequest) .withSingleReply(false) .build(); commandRequest.setReplyTo(body.getTopicName()); return commandSubscribeRequestHandler.handle(commandRequest); }).collect(toList()); }
public CompletableFuture<List<DeviceVO>> list(ListDeviceRequest listDeviceRequest) { CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request .newBuilder() .withBody(listDeviceRequest) .build(), new ResponseConsumer(future)); return future.thenApply(response -> ((ListDeviceResponse) response.getBody()).getDevices()); }