@Override
public Response handle(Request request) {
CommandSubscribeRequest body = (CommandSubscribeRequest) request.getBody();
validate(body);
Subscriber subscriber = new Subscriber(body.getSubscriptionId(), request.getReplyTo(), request.getCorrelationId());
Filter filter = body.getFilter();
if (body.isReturnUpdated()) {
filter.setEventName(COMMANDS_UPDATE_EVENT.name());
}
eventBus.subscribe(filter, subscriber);
Collection<DeviceCommand> commands = findCommands(filter, body.getNames(), body.getTimestamp(), body.isReturnUpdated(), body.getLimit());
CommandSubscribeResponse subscribeResponse = new CommandSubscribeResponse(body.getSubscriptionId(), commands);
return Response.newBuilder()
.withBody(subscribeResponse)
.withLast(false)
.withCorrelationId(request.getCorrelationId())
.buildSuccess();
}