private void parseEventClientSync(ClientSync sync, ByteBuffer buf, int options, int payloadLength) { EventClientSync eventSync = new EventClientSync(); if (hasOption(options, EVENT_SEQ_NUMBER_REQUEST_OPTION)) { eventSync.setSeqNumberRequest(true); } int payloadLimitPosition = buf.position() + payloadLength; while (buf.position() < payloadLimitPosition) { byte fieldId = buf.get(); // reading unused reserved field buf.get(); switch (fieldId) { case EVENT_LISTENERS_FIELD_ID: eventSync.setEventListenersRequests(parseListenerRequests(buf)); break; case EVENT_LIST_FIELD_ID: eventSync.setEvents(parseEvents(buf)); break; default: break; } } sync.setEventSync(eventSync); }
private EventServerSync processEventSyncResponse(String endpointId, int requestHash, String appToken, EventClientSync request, EndpointProfileDto profile) { EventServerSync response = new EventServerSync(); List<EventListenersRequest> requests = request.getEventListenersRequests(); if (requests != null && !requests.isEmpty()) { LOG.debug("[{}] processing {} endpoint listener requests", endpointId, requests.size()); List<EventListenersResponse> responses = new ArrayList<>(requests.size()); for (EventListenersRequest elRequest : requests) { LOG.debug("[{}] processing event listener request {}", endpointId, request); EventListenersResponse elResponse = endpointUserService.findListeners( profile, appToken, elRequest); LOG.debug("[{}] event listener response {}", endpointId, response); responses.add(elResponse); } response.setEventListenersResponses(responses); } else { List<EventListenersResponse> emptyList = Collections.emptyList(); response.setEventListenersResponses(emptyList); } return response; }
/** * Updates a request. */ public void updateRequest(ServerSync response) { UUID channelUuid = getChannelUuid(); LOG.debug("[{}] Cleanup profile request", channelUuid); request.setProfileSync(null); if (request.getUserSync() != null) { LOG.debug("[{}] Cleanup user request", channelUuid); request.setUserSync(new UserClientSync()); } if (request.getEventSync() != null) { LOG.debug("[{}] Cleanup event request", channelUuid); request.setEventSync(new EventClientSync()); } if (request.getLogSync() != null) { LOG.debug("[{}] Cleanup log request", channelUuid); request.getLogSync().setLogEntries(null); } if (request.getNotificationSync() != null) { LOG.debug("[{}] Cleanup/update notification request", channelUuid); request.getNotificationSync().setSubscriptionCommands(null); request.getNotificationSync().setAcceptedUnicastNotifications(null); } }
private void processSeqNumber(EventClientSync request, SyncContext responseHolder) { if (request.isSeqNumberRequest()) { EventServerSync response = responseHolder.getResponse().getEventSync(); if (response == null) { response = new EventServerSync(); responseHolder.getResponse().setEventSync(response); } response.setEventSequenceNumberResponse(new EventSequenceNumberResponse( Math.max(state.getEventSeqNumber(), 0))); } }
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()); } } }
if (eventSync != null ? !eventSync.equals(that.eventSync) : that.eventSync != null) { return false;
@Override public int hashCode() { int result = requestId; result = 31 * result + (clientSyncMetaData != null ? clientSyncMetaData.hashCode() : 0); result = 31 * result + (bootstrapSync != null ? bootstrapSync.hashCode() : 0); result = 31 * result + (profileSync != null ? profileSync.hashCode() : 0); result = 31 * result + (forceConfigurationSync ? 1 : 0); result = 31 * result + (configurationSync != null ? configurationSync.hashCode() : 0); result = 31 * result + (forceNotificationSync ? 1 : 0); result = 31 * result + (notificationSync != null ? notificationSync.hashCode() : 0); result = 31 * result + (userSync != null ? userSync.hashCode() : 0); result = 31 * result + (eventSync != null ? eventSync.hashCode() : 0); result = 31 * result + (logSync != null ? logSync.hashCode() : 0); result = 31 * result + (useConfigurationRawSchema ? 1 : 0); return result; }
private static EventClientSync convert(EventSyncRequest source) { if (source == null) { return null; } EventClientSync sync = new EventClientSync(); sync.setSeqNumberRequest(source.getEventSequenceNumberRequest() != null); if (source.getEvents() != null) { List<Event> events = new ArrayList<Event>(source.getEvents().size()); for (org.kaaproject.kaa.common.endpoint.gen.Event event : source.getEvents()) { events.add(convert(event)); } sync.setEvents(events); } if (source.getEventListenersRequests() != null) { List<EventListenersRequest> requests = new ArrayList<>( source.getEventListenersRequests().size()); for (org.kaaproject.kaa.common.endpoint.gen.EventListenersRequest request : source.getEventListenersRequests()) { requests.add(new EventListenersRequest( request.getRequestId(), request.getEventClassFQNs())); } sync.setEventListenersRequests(requests); } return sync; }