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

com.arangodb.model.StreamTransactionOptions Maven / Gradle / Ivy

There is a newer version: 7.8.0
Show newest version
/*
 * DISCLAIMER
 *
 * Copyright 2016 ArangoDB GmbH, Cologne, Germany
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Copyright holder is ArangoDB GmbH, Cologne, Germany
 */

package com.arangodb.model;

import com.arangodb.shaded.fasterxml.jackson.annotation.JsonIgnore;

/**
 * @author Mark Vollmary
 * @author Michele Rastelli
 * @see API Documentation
 * @since ArangoDB 3.5.0
 */
public final class StreamTransactionOptions {

    private final TransactionCollectionOptions collections;
    private Integer lockTimeout;
    private Boolean waitForSync;
    private Long maxTransactionSize;
    private Boolean allowImplicit;
    @JsonIgnore
    private Boolean allowDirtyRead;

    public StreamTransactionOptions() {
        super();
        collections = new TransactionCollectionOptions();
    }

    public TransactionCollectionOptions getCollections() {
        return collections;
    }

    public Integer getLockTimeout() {
        return lockTimeout;
    }

    /**
     * @param lockTimeout a numeric value that can be used to set a timeout in seconds for
     *                    waiting on collection locks. This option is only meaningful when using
     *                    exclusive locks. If not specified, a default value of 900 seconds will be
     *                    used. Setting lockTimeout to 0 will make ArangoDB not time out
     *                    waiting for a lock.
     * @return options
     */
    public StreamTransactionOptions lockTimeout(final Integer lockTimeout) {
        this.lockTimeout = lockTimeout;
        return this;
    }

    public Boolean getWaitForSync() {
        return waitForSync;
    }

    /**
     * @param waitForSync an optional boolean flag that, if set, will force the transaction to write all data to disk
     *                    before
     *                    returning
     * @return options
     */
    public StreamTransactionOptions waitForSync(final Boolean waitForSync) {
        this.waitForSync = waitForSync;
        return this;
    }

    /**
     * @param read contains the array of collection-names to be used in the transaction (mandatory) for read
     * @return options
     */
    public StreamTransactionOptions readCollections(final String... read) {
        collections.read(read);
        return this;
    }

    /**
     * @param write contains the array of collection-names to be used in the transaction (mandatory) for write
     * @return options
     */
    public StreamTransactionOptions writeCollections(final String... write) {
        collections.write(write);
        return this;
    }

    /**
     * @param exclusive contains the array of collection-names to be used in the transaction (mandatory) for
     *                  exclusive write
     * @return options
     */
    public StreamTransactionOptions exclusiveCollections(final String... exclusive) {
        collections.exclusive(exclusive);
        return this;
    }

    public Boolean getAllowImplicit() {
        return allowImplicit;
    }

    /**
     * @param allowImplicit Allow reading from undeclared collections.
     * @return options
     */
    public StreamTransactionOptions allowImplicit(final Boolean allowImplicit) {
        this.allowImplicit = allowImplicit;
        return this;
    }

    public Long getMaxTransactionSize() {
        return maxTransactionSize;
    }

    /**
     * @param maxTransactionSize Transaction size limit in bytes. Honored by the RocksDB storage engine only.
     * @return options
     */
    public StreamTransactionOptions maxTransactionSize(final Long maxTransactionSize) {
        this.maxTransactionSize = maxTransactionSize;
        return this;
    }

    public Boolean getAllowDirtyRead() {
        return allowDirtyRead;
    }

    /**
     * @param allowDirtyRead Set to {@code true} allows reading from followers in an active-failover setup.
     * @return options
     * @see API
     * Documentation
     * @since ArangoDB 3.4.0
     */
    public StreamTransactionOptions allowDirtyRead(final Boolean allowDirtyRead) {
        this.allowDirtyRead = allowDirtyRead;
        return this;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy