com.datastax.oss.driver.api.core.ConsistencyLevel Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
package com.datastax.oss.driver.api.core;
import edu.umd.cs.findbugs.annotations.NonNull;
/**
* The consistency level of a request.
*
* The only reason to model this as an interface (as opposed to an enum type) is to accommodate
* for custom protocol extensions. If you're connecting to a standard Apache Cassandra cluster, all
* {@code ConsistencyLevel}s are {@link DefaultConsistencyLevel} instances.
*/
public interface ConsistencyLevel {
ConsistencyLevel ANY = DefaultConsistencyLevel.ANY;
ConsistencyLevel ONE = DefaultConsistencyLevel.ONE;
ConsistencyLevel TWO = DefaultConsistencyLevel.TWO;
ConsistencyLevel THREE = DefaultConsistencyLevel.THREE;
ConsistencyLevel QUORUM = DefaultConsistencyLevel.QUORUM;
ConsistencyLevel ALL = DefaultConsistencyLevel.ALL;
ConsistencyLevel LOCAL_ONE = DefaultConsistencyLevel.LOCAL_ONE;
ConsistencyLevel LOCAL_QUORUM = DefaultConsistencyLevel.LOCAL_QUORUM;
ConsistencyLevel EACH_QUORUM = DefaultConsistencyLevel.EACH_QUORUM;
ConsistencyLevel SERIAL = DefaultConsistencyLevel.SERIAL;
ConsistencyLevel LOCAL_SERIAL = DefaultConsistencyLevel.LOCAL_SERIAL;
/** The numerical value that the level is encoded to in protocol frames. */
int getProtocolCode();
/** The textual representation of the level in configuration files. */
@NonNull
String name();
/** Whether this consistency level applies to the local datacenter only. */
boolean isDcLocal();
/**
* Whether this consistency level is serial, that is, applies only to the "paxos" phase of a lightweight
* transaction.
*
*
Serial consistency levels are only meaningful when executing conditional updates ({@code
* INSERT}, {@code UPDATE} or {@code DELETE} statements with an {@code IF} condition).
*/
boolean isSerial();
}