protected void sendEventsIfPresent(ActorContext context, EventClientSync request) { List<Event> events = request.getEvents(); if (state.getUserId() != null && events != null && !events.isEmpty()) { LOG.debug("[{}][{}] Processing events {} with seq number > {}", endpointKey, actorKey, events, state.getEventSeqNumber()); List<Event> eventsToSend = new ArrayList<>(events.size()); int maxSentEventSeqNum = state.getEventSeqNumber(); for (Event event : events) { if (event.getSeqNum() > state.getEventSeqNumber()) { event.setSource(endpointKey); eventsToSend.add(event); maxSentEventSeqNum = Math.max(event.getSeqNum(), maxSentEventSeqNum); } else { LOG.debug("[{}][{}] Ignoring duplicate/old event {} due to seq number < {}", endpointKey, actorKey, events, state.getEventSeqNumber()); } } state.setEventSeqNumber(maxSentEventSeqNum); if (!eventsToSend.isEmpty()) { EndpointEventSendMessage message = new EndpointEventSendMessage( state.getUserId(), eventsToSend, key, appToken, context.self()); context.parent().tell(message, context.self()); } } }
/** * Converts {@link Event} to * {@link org.kaaproject.kaa.common.endpoint.gen.Event}. * * @param event the event * @return the Avro event */ public static org.kaaproject.kaa.common.endpoint.gen.Event convert(Event event) { if (event == null) { return null; } return new org.kaaproject.kaa.common.endpoint.gen.Event( event.getSeqNum(), event.getEventClassFqn(), event.getEventData(), event.getSource(), event.getTarget()); }