@Override protected CacheEventJournalReadCodec.RequestParameters decodeClientMessage(ClientMessage clientMessage) { return CacheEventJournalReadCodec.decodeRequest(clientMessage); }
@Override public ReadResultSet<?> decodeClientMessage(ClientMessage message) { final CacheEventJournalReadCodec.ResponseParameters params = CacheEventJournalReadCodec.decodeResponse(message); final PortableReadResultSet<?> resultSet = new PortableReadResultSet<Object>( params.readCount, params.items, params.itemSeqs, params.nextSeqExist ? params.nextSeq : ReadResultSet.SEQUENCE_UNAVAILABLE); resultSet.setSerializationService(getSerializationService()); return resultSet; } };
@Override protected ClientMessage encodeResponse(Object response) { // we are not deserializing the whole content, only the enclosing portable. The actual items remain un final ReadResultSetImpl resultSet = nodeEngine.getSerializationService().toObject(response); final List<Data> items = new ArrayList<Data>(resultSet.size()); final long[] seqs = new long[resultSet.size()]; final Data[] dataItems = resultSet.getDataItems(); for (int k = 0; k < resultSet.size(); k++) { items.add(dataItems[k]); seqs[k] = resultSet.getSequence(k); } return CacheEventJournalReadCodec.encodeResponse( resultSet.readCount(), items, seqs, resultSet.getNextSequenceToReadFrom()); }
@Override public <T> ICompletableFuture<ReadResultSet<T>> readFromEventJournal( long startSequence, int minSize, int maxSize, int partitionId, Predicate<? super EventJournalCacheEvent<K, V>> predicate, Projection<? super EventJournalCacheEvent<K, V>, ? extends T> projection ) { if (maxSize < minSize) { throw new IllegalArgumentException("maxSize " + maxSize + " must be greater or equal to minSize " + minSize); } final SerializationService ss = getSerializationService(); final ClientMessage request = CacheEventJournalReadCodec.encodeRequest( nameWithPrefix, startSequence, minSize, maxSize, ss.toData(predicate), ss.toData(projection)); final ClientInvocationFuture fut = new ClientInvocation(getClient(), request, getName(), partitionId).invoke(); return new ClientDelegatingFuture<ReadResultSet<T>>(fut, ss, eventJournalReadResponseDecoder); }
@Override public ReadResultSet<?> decodeClientMessage(ClientMessage message) { final CacheEventJournalReadCodec.ResponseParameters params = CacheEventJournalReadCodec.decodeResponse(message); final PortableReadResultSet<?> resultSet = new PortableReadResultSet<Object>( params.readCount, params.items, params.itemSeqs, params.nextSeqExist ? params.nextSeq : ReadResultSet.SEQUENCE_UNAVAILABLE); resultSet.setSerializationService(getSerializationService()); return resultSet; } };
@Override protected ClientMessage encodeResponse(Object response) { // we are not deserializing the whole content, only the enclosing portable. The actual items remain un final ReadResultSetImpl resultSet = nodeEngine.getSerializationService().toObject(response); final List<Data> items = new ArrayList<Data>(resultSet.size()); final long[] seqs = new long[resultSet.size()]; final Data[] dataItems = resultSet.getDataItems(); for (int k = 0; k < resultSet.size(); k++) { items.add(dataItems[k]); seqs[k] = resultSet.getSequence(k); } return CacheEventJournalReadCodec.encodeResponse( resultSet.readCount(), items, seqs, resultSet.getNextSequenceToReadFrom()); }
@Override public <T> ICompletableFuture<ReadResultSet<T>> readFromEventJournal( long startSequence, int minSize, int maxSize, int partitionId, Predicate<? super EventJournalCacheEvent<K, V>> predicate, Projection<? super EventJournalCacheEvent<K, V>, ? extends T> projection ) { if (maxSize < minSize) { throw new IllegalArgumentException("maxSize " + maxSize + " must be greater or equal to minSize " + minSize); } final SerializationService ss = getSerializationService(); final ClientMessage request = CacheEventJournalReadCodec.encodeRequest( nameWithPrefix, startSequence, minSize, maxSize, ss.toData(predicate), ss.toData(projection)); final ClientInvocationFuture fut = new ClientInvocation(getClient(), request, getName(), partitionId).invoke(); return new ClientDelegatingFuture<ReadResultSet<T>>(fut, ss, eventJournalReadResponseDecoder); }
@Override protected CacheEventJournalReadCodec.RequestParameters decodeClientMessage(ClientMessage clientMessage) { return CacheEventJournalReadCodec.decodeRequest(clientMessage); }