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

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

package com.eventstore.dbclient;

import com.eventstore.dbclient.proto.persistentsubscriptions.Persistent;
import com.eventstore.dbclient.proto.shared.Shared;

class CreatePersistentSubscriptionToAll extends AbstractCreatePersistentSubscription {
    private final CreatePersistentSubscriptionToAllOptions options;

    public CreatePersistentSubscriptionToAll(GrpcClient client, String group,
                                             CreatePersistentSubscriptionToAllOptions options) {
        super(client, group, options.getSettings(), options);
        this.options = options;
    }

    @Override
    protected Persistent.CreateReq.Options.Builder createOptions() {
        Persistent.CreateReq.Options.Builder optionsBuilder = Persistent.CreateReq.Options.newBuilder();
        Persistent.CreateReq.AllOptions.Builder allOptionsBuilder = Persistent.CreateReq.AllOptions.newBuilder();
        StreamPosition position = this.options.getSettings().getStartFrom();

        if (position instanceof StreamPosition.Start) {
            allOptionsBuilder.setStart(Shared.Empty.newBuilder());
        } else if (position instanceof StreamPosition.End) {
            allOptionsBuilder.setEnd(Shared.Empty.newBuilder());
        } else {
            Position pos = ((StreamPosition.Position) position).getPosition();
            allOptionsBuilder.setPosition(Persistent.CreateReq.Position.newBuilder()
                    .setCommitPosition(pos.getCommitUnsigned())
                    .setPreparePosition(pos.getPrepareUnsigned()));
        }

        SubscriptionFilter filter = options.getFilter();
        if (filter != null) {
            filter.addToWirePersistentCreateReq(allOptionsBuilder);
        } else {
            allOptionsBuilder.setNoFilter(Shared.Empty.getDefaultInstance());
        }

        optionsBuilder.setAll(allOptionsBuilder);

        return optionsBuilder;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy