Package com.netflix.astyanax.contrib.dualwrites

Source Code of com.netflix.astyanax.contrib.dualwrites.DualWritesCqlStatement

package com.netflix.astyanax.contrib.dualwrites;

import java.util.Collections;

import com.google.common.util.concurrent.ListenableFuture;
import com.netflix.astyanax.connectionpool.OperationResult;
import com.netflix.astyanax.connectionpool.exceptions.ConnectionException;
import com.netflix.astyanax.cql.CqlPreparedStatement;
import com.netflix.astyanax.cql.CqlStatement;
import com.netflix.astyanax.cql.CqlStatementResult;
import com.netflix.astyanax.model.ConsistencyLevel;

public class DualWritesCqlStatement implements CqlStatement {

    private final CqlStatement primary;
    private final CqlStatement secondary;
    private final DualWritesStrategy execStrategy;
    private final DualKeyspaceMetadata ksMd;

    public DualWritesCqlStatement(CqlStatement primaryCql, CqlStatement secondarycql, DualWritesStrategy strategy, DualKeyspaceMetadata keyspaceMd) {
        primary = primaryCql;
        secondary = secondarycql;
        execStrategy = strategy;
        ksMd = keyspaceMd;
    }

    @Override
    public CqlStatement withConsistencyLevel(ConsistencyLevel cl) {
        primary.withConsistencyLevel(cl);
        secondary.withConsistencyLevel(cl);
        return this;
    }

    @Override
    public CqlStatement withCql(String cql) {
        primary.withCql(cql);
        secondary.withCql(cql);
        return this;
    }

    @Override
    public CqlPreparedStatement asPreparedStatement() {
        CqlPreparedStatement pstmtPrimary = primary.asPreparedStatement();
        CqlPreparedStatement pstmtSecondary = primary.asPreparedStatement();
        return new DualWritesCqlPreparedStatement(pstmtPrimary, pstmtSecondary, execStrategy, ksMd);
    }

    @Override
    public OperationResult<CqlStatementResult> execute() throws ConnectionException {
       
        WriteMetadata writeMd = new WriteMetadata(ksMd, null, null);
        return execStrategy.wrapExecutions(primary, secondary, Collections.singletonList(writeMd)).execute();
    }

    @Override
    public ListenableFuture<OperationResult<CqlStatementResult>> executeAsync() throws ConnectionException {
        WriteMetadata writeMd = new WriteMetadata(ksMd, null, null);
        return execStrategy.wrapExecutions(primary, secondary, Collections.singletonList(writeMd)).executeAsync();
    }
}
TOP

Related Classes of com.netflix.astyanax.contrib.dualwrites.DualWritesCqlStatement

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.