All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.eventstore.dbclient.ReadAll Maven / Gradle / Ivy

package com.eventstore.dbclient;

import com.eventstore.dbclient.proto.shared.Shared;
import com.eventstore.dbclient.proto.streams.StreamsOuterClass;

class ReadAll extends AbstractRead {
    private final ReadAllOptions options;
    private final long maxCount;

    public ReadAll(GrpcClient client, long maxCount, ReadAllOptions options) {
        super(client, options);

        this.maxCount = maxCount;
        this.options = options;
    }

    @Override
    public StreamsOuterClass.ReadReq.Options.Builder createOptions() {
        StreamsOuterClass.ReadReq.Options.AllOptions.Builder optionsOrBuilder =
                StreamsOuterClass.ReadReq.Options.AllOptions.newBuilder();

        if (this.options.getPosition().equals(Position.END)) {
               optionsOrBuilder.setEnd(Shared.Empty.getDefaultInstance());
        } else if (this.options.getPosition().equals(Position.START)) {
               optionsOrBuilder.setStart(Shared.Empty.getDefaultInstance());
        } else {
               optionsOrBuilder.setPosition(StreamsOuterClass.ReadReq.Options.Position.newBuilder()
                       .setCommitPosition(this.options.getPosition().getCommitUnsigned())
                       .setPreparePosition(this.options.getPosition().getPrepareUnsigned()));
        }

        StreamsOuterClass.ReadReq.Options.Builder builder = defaultReadOptions.clone()
                .setAll(optionsOrBuilder)
                .setResolveLinks(this.options.shouldResolveLinkTos())
                .setCount(this.maxCount)
                .setNoFilter(Shared.Empty.getDefaultInstance())
                .setReadDirection(this.options.getDirection() == Direction.Forwards ?
                        StreamsOuterClass.ReadReq.Options.ReadDirection.Forwards :
                        StreamsOuterClass.ReadReq.Options.ReadDirection.Backwards);

        return builder;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy