/** * 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()); }
private List<Event> parseEvents(ByteBuffer buf) { int eventsCount = getIntFromUnsignedShort(buf); List<Event> events = new ArrayList<>(eventsCount); for (int i = 0; i < eventsCount; i++) { Event event = new Event(); event.setSeqNum(buf.getInt()); int eventOptions = getIntFromUnsignedShort(buf); int fqnLength = getIntFromUnsignedShort(buf); int dataSize = 0; if (hasOption(eventOptions, CLIENT_EVENT_DATA_IS_PRESENT_OPTION)) { dataSize = buf.getInt(); } if (hasOption(eventOptions, 0x01)) { event.setTarget(Base64Util.encode(getNewByteArray(buf, PUBLIC_KEY_HASH_SIZE))); } event.setEventClassFqn(getUtf8String(buf, fqnLength)); if (dataSize > 0) { event.setEventData(getNewByteBuffer(buf, dataSize)); } else { event.setEventData(EMPTY_BUFFER); } events.add(event); } return events; }
buf.putShort((short) eventSync.getEvents().size()); for (Event event : eventSync.getEvents()) { boolean eventDataIsEmpty = event.getEventData() == null || event.getEventData().array().length == 0; if (!eventDataIsEmpty) { buf.putShort(EVENT_DATA_IS_EMPTY_OPTION); buf.putShort(NOTHING); buf.putShort((short) event.getEventClassFqn().length()); if (!eventDataIsEmpty) { buf.putInt(event.getEventData().array().length); buf.put(Base64Util.decode(event.getSource())); putUtf(buf, event.getEventClassFqn()); if (!eventDataIsEmpty) { put(buf, event.getEventData().array());
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()); } } }
public String getTarget() { return event.getTarget(); }
public String getEventClassFqn() { return event.getEventClassFqn(); }
public EndpointEvent toLocalEvent() { this.event.getEvent().setTarget(Base64Util.encode(this.recipient.getEndpointKey().getData())); return this.event; }
/** * Converts Avro {@link org.kaaproject.kaa.common.endpoint.gen.Event} to * {@link Event}. * * @param event the avro structure * @return the event */ public static Event convert(org.kaaproject.kaa.common.endpoint.gen.Event event) { if (event == null) { return null; } return new Event( event.getSeqNum(), event.getEventClassFQN(), event.getEventData(), event.getSource(), event.getTarget()); }