private void processLogUpload(ActorContext context, ClientSync syncRequest, SyncContext responseHolder) { LogClientSync request = syncRequest.getLogSync(); if (request != null) { if (request.getLogEntries() != null && request.getLogEntries().size() > 0) { LOG.debug("[{}][{}] Processing log upload request {}", endpointKey, actorKey, request.getLogEntries().size()); EndpointProfileDataDto profileDto = convert(responseHolder.getEndpointProfile()); List<LogEvent> logEvents = new ArrayList<>(request.getLogEntries().size()); for (LogEntry logEntry : request.getLogEntries()) { LogEvent logEvent = new LogEvent(); logEvent.setLogData(logEntry.getData().array()); logEvents.add(logEvent); } BaseLogEventPack logPack = new BaseLogEventPack(profileDto, System.currentTimeMillis(), responseHolder.getEndpointProfile().getLogSchemaVersion(), logEvents); logPack.setUserId(state.getUserId()); context.parent().tell(new LogEventPackMessage( request.getRequestId(), context.self(), logPack), context.self()); } if (logUploadResponseMap.size() > 0) { responseHolder.getResponse().setLogSync(EntityConvertUtils.convert(logUploadResponseMap)); logUploadResponseMap.clear(); } } }
/** * Process a log delivery message. * * @param context actor context * @param message log delivery message */ public void processLogDeliveryMessage(ActorContext context, LogDeliveryMessage message) { LOG.debug("[{}][{}] Received log delivery message for request [{}] with status {}", endpointKey, actorKey, message.getRequestId(), message.isSuccess()); logUploadResponseMap.put(message.getRequestId(), message); Set<ChannelMetaData> channels = state.getChannelsByType(TransportType.LOGGING); for (ChannelMetaData channel : channels) { SyncRequestMessage pendingRequest = channel.getRequestMessage(); ServerSync pendingResponse = channel.getResponseHolder().getResponse(); pendingResponse.setLogSync(EntityConvertUtils.convert(logUploadResponseMap)); LOG.debug("[{}][{}] sending reply to [{}] channel", endpointKey, actorKey, channel.getId()); sendReply(context, pendingRequest, pendingResponse); if (!channel.getType().isAsync()) { state.removeChannel(channel); } } logUploadResponseMap.clear(); }
/** * Clean <code>ServerSync</code>, which mean that all fields are null. * * @param syncResponse is instance for cleaning */ public static void cleanup(ServerSync syncResponse) { if (syncResponse == null) { return; } syncResponse.setUserSync(null); syncResponse.setRedirectSync(null); syncResponse.setProfileSync(null); syncResponse.setNotificationSync(null); syncResponse.setLogSync(null); syncResponse.setEventSync(null); syncResponse.setConfigurationSync(null); }
/** * make deep copy of <code>ServerSync</code> instance. * * @param source is source for copping * @return deep copy of <code>ServerSync</code> instance */ public static ServerSync deepCopy(ServerSync source) { if (source == null) { return null; } ServerSync copy = new ServerSync(); copy.setRequestId(source.getRequestId()); copy.setStatus(source.getStatus()); copy.setUserSync(deepCopy(source.getUserSync())); copy.setRedirectSync(deepCopy(source.getRedirectSync())); copy.setProfileSync(deepCopy(source.getProfileSync())); copy.setNotificationSync(deepCopy(source.getNotificationSync())); copy.setLogSync(deepCopy(source.getLogSync())); copy.setEventSync(deepCopy(source.getEventSync())); copy.setConfigurationSync(deepCopy(source.getConfigurationSync())); return copy; }