private List<String> parseUnicastIds(ByteBuffer buf) { int count = getIntFromUnsignedShort(buf); List<String> uids = new ArrayList<>(count); for (int i = 0; i < count; i++) { int uidLength = buf.getInt(); uids.add(getUtf8String(buf, uidLength)); } return uids; }
private UserAttachRequest parseUserAttachRequest(ByteBuffer buf) { int extIdLength = buf.get() & 0xFF; int tokenLength = getIntFromUnsignedShort(buf); int verifierTokenLength = getIntFromUnsignedShort(buf); // reserved buf.getShort(); String userExternalId = getUtf8String(buf, extIdLength); String userAccessToken = getUtf8String(buf, tokenLength); String userVerifierToken = getUtf8String(buf, verifierTokenLength); return new UserAttachRequest(userVerifierToken, userExternalId, userAccessToken); }
private static String getUtf8String(ByteBuffer buf) { return getUtf8String(buf, getIntFromUnsignedShort(buf)); }
private List<EndpointAttachRequest> parseEndpointAttachRequests(ByteBuffer buf) { // reserved buf.get(); int count = getIntFromUnsignedShort(buf); List<EndpointAttachRequest> requests = new ArrayList<EndpointAttachRequest>(count); for (int i = 0; i < count; i++) { int requestId = getIntFromUnsignedShort(buf); String accessToken = getUtf8String(buf); requests.add(new EndpointAttachRequest(requestId, accessToken)); } return requests; }
private List<EventListenersRequest> parseListenerRequests(ByteBuffer buf) { int requestsCount = getIntFromUnsignedShort(buf); List<EventListenersRequest> requests = new ArrayList<>(requestsCount); for (int i = 0; i < requestsCount; i++) { int requestId = getIntFromUnsignedShort(buf); int fqnCount = getIntFromUnsignedShort(buf); List<String> fqns = new ArrayList<>(fqnCount); for (int j = 0; j < fqnCount; j++) { int fqnLength = getIntFromUnsignedShort(buf); // reserved buf.getShort(); fqns.add(getUtf8String(buf, fqnLength)); } requests.add(new EventListenersRequest(requestId, fqns)); } return requests; }
private void parseProfileClientSync(ClientSync sync, ByteBuffer buf, int options, int payloadLength) { int payloadLimitPosition = buf.position() + payloadLength; ProfileClientSync profileSync = new ProfileClientSync(); profileSync.setProfileBody(getNewByteBuffer(buf, buf.getInt())); while (buf.position() < payloadLimitPosition) { byte fieldId = buf.get(); // reading unused reserved field buf.get(); switch (fieldId) { case PUBLIC_KEY_FIELD_ID: profileSync.setEndpointPublicKey(getNewByteBuffer(buf, getIntFromUnsignedShort(buf))); break; case ACCESS_TOKEN_FIELD_ID: profileSync.setEndpointAccessToken(getUtf8String(buf)); break; default: break; } } sync.setProfileSync(profileSync); }
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; }
private void parseClientSyncMetaData(ClientSync sync, ByteBuffer buf, int options, int payloadLength) throws PlatformEncDecException { sync.setRequestId(buf.getInt()); ClientSyncMetaData md = new ClientSyncMetaData(); if (hasOption(options, CLIENT_META_SYNC_TIMEOUT_OPTION)) { md.setTimeout((long) buf.getInt()); } if (hasOption(options, CLIENT_META_SYNC_KEY_HASH_OPTION)) { md.setEndpointPublicKeyHash(getNewByteBuffer(buf, PUBLIC_KEY_HASH_SIZE)); } if (hasOption(options, CLIENT_META_SYNC_PROFILE_HASH_OPTION)) { md.setProfileHash(getNewByteBuffer(buf, PROFILE_HASH_SIZE)); } if (hasOption(options, CLIENT_META_SYNC_SDK_TOKEN_OPTION)) { md.setSdkToken(getUtf8String(buf, Constants.SDK_TOKEN_SIZE)); } sync.setClientSyncMetaData(md); }