/*
 * Copyright DataStax, Inc.
 *
 * 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.
 */
package com.datastax.oss.driver.api.core.cql;

import com.datastax.oss.driver.api.core.session.Session;
import com.datastax.oss.driver.internal.core.cql.DefaultPrepareRequest;
import edu.umd.cs.findbugs.annotations.NonNull;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletionStage;

A session that offers user-friendly methods to execute CQL requests asynchronously.
Since:4.4.0
/** * A session that offers user-friendly methods to execute CQL requests asynchronously. * * @since 4.4.0 */
public interface AsyncCqlSession extends Session {
Executes a CQL statement asynchronously (the call returns as soon as the statement was sent, generally before the result is available).
Params:
  • statement – the CQL query to execute (that can be any Statement).
Returns:a CompletionStage that, once complete, will produce the async result set.
/** * Executes a CQL statement asynchronously (the call returns as soon as the statement was sent, * generally before the result is available). * * @param statement the CQL query to execute (that can be any {@code Statement}). * @return a {@code CompletionStage} that, once complete, will produce the async result set. */
@NonNull default CompletionStage<AsyncResultSet> executeAsync(@NonNull Statement<?> statement) { return Objects.requireNonNull( execute(statement, Statement.ASYNC), "The CQL processor should never return a null result"); }
Executes a CQL statement asynchronously (the call returns as soon as the statement was sent, generally before the result is available).

This is an alias for executeAsync(Statement<?>) executeAsync(SimpleStatement.newInstance(query))}.

Params:
  • query – the CQL query to execute.
See Also:
Returns:a CompletionStage that, once complete, will produce the async result set.
/** * Executes a CQL statement asynchronously (the call returns as soon as the statement was sent, * generally before the result is available). * * <p>This is an alias for {@link #executeAsync(Statement)} * executeAsync(SimpleStatement.newInstance(query))}. * * @param query the CQL query to execute. * @return a {@code CompletionStage} that, once complete, will produce the async result set. * @see SimpleStatement#newInstance(String) */
@NonNull default CompletionStage<AsyncResultSet> executeAsync(@NonNull String query) { return executeAsync(SimpleStatement.newInstance(query)); }
Executes a CQL statement asynchronously (the call returns as soon as the statement was sent, generally before the result is available).

This is an alias for executeAsync(Statement<?>) executeAsync(SimpleStatement.newInstance(query, values))}.

Params:
  • query – the CQL query to execute.
  • values – the values for placeholders in the query string. Individual values can be null, but the vararg array itself can't.
See Also:
Returns:a CompletionStage that, once complete, will produce the async result set.
/** * Executes a CQL statement asynchronously (the call returns as soon as the statement was sent, * generally before the result is available). * * <p>This is an alias for {@link #executeAsync(Statement)} * executeAsync(SimpleStatement.newInstance(query, values))}. * * @param query the CQL query to execute. * @param values the values for placeholders in the query string. Individual values can be {@code * null}, but the vararg array itself can't. * @return a {@code CompletionStage} that, once complete, will produce the async result set. * @see SimpleStatement#newInstance(String, Object...) */
@NonNull default CompletionStage<AsyncResultSet> executeAsync( @NonNull String query, @NonNull Object... values) { return executeAsync(SimpleStatement.newInstance(query, values)); }
Executes a CQL statement asynchronously (the call returns as soon as the statement was sent, generally before the result is available).

This is an alias for executeAsync(Statement<?>) executeAsync(SimpleStatement.newInstance(query, values))}.

Params:
  • query – the CQL query to execute.
  • values – the values for named placeholders in the query string. Individual values can be null, but the map itself can't.
See Also:
Returns:a CompletionStage that, once complete, will produce the async result set.
/** * Executes a CQL statement asynchronously (the call returns as soon as the statement was sent, * generally before the result is available). * * <p>This is an alias for {@link #executeAsync(Statement)} * executeAsync(SimpleStatement.newInstance(query, values))}. * * @param query the CQL query to execute. * @param values the values for named placeholders in the query string. Individual values can be * {@code null}, but the map itself can't. * @return a {@code CompletionStage} that, once complete, will produce the async result set. * @see SimpleStatement#newInstance(String, Map) */
@NonNull default CompletionStage<AsyncResultSet> executeAsync( @NonNull String query, @NonNull Map<String, Object> values) { return executeAsync(SimpleStatement.newInstance(query, values)); }
Prepares a CQL statement asynchronously (the call returns as soon as the prepare query was sent, generally before the statement is prepared).

Note that the bound statements created from the resulting prepared statement will inherit some of the attributes of query; see SyncCqlSession.prepare(SimpleStatement) for more details.

The result of this method is cached (see SyncCqlSession.prepare(SimpleStatement) for more explanations).

Params:
  • statement – the CQL query to prepare (that can be any SimpleStatement).
Returns:a CompletionStage that, once complete, will produce the prepared statement.
/** * Prepares a CQL statement asynchronously (the call returns as soon as the prepare query was * sent, generally before the statement is prepared). * * <p>Note that the bound statements created from the resulting prepared statement will inherit * some of the attributes of {@code query}; see {@link SyncCqlSession#prepare(SimpleStatement)} * for more details. * * <p>The result of this method is cached (see {@link SyncCqlSession#prepare(SimpleStatement)} for * more explanations). * * @param statement the CQL query to prepare (that can be any {@code SimpleStatement}). * @return a {@code CompletionStage} that, once complete, will produce the prepared statement. */
@NonNull default CompletionStage<PreparedStatement> prepareAsync(@NonNull SimpleStatement statement) { return Objects.requireNonNull( execute(new DefaultPrepareRequest(statement), PrepareRequest.ASYNC), "The CQL prepare processor should never return a null result"); }
Prepares a CQL statement asynchronously (the call returns as soon as the prepare query was sent, generally before the statement is prepared).

The result of this method is cached (see SyncCqlSession.prepare(SimpleStatement) for more explanations).

Params:
  • query – the CQL query string to prepare.
Returns:a CompletionStage that, once complete, will produce the prepared statement.
/** * Prepares a CQL statement asynchronously (the call returns as soon as the prepare query was * sent, generally before the statement is prepared). * * <p>The result of this method is cached (see {@link SyncCqlSession#prepare(SimpleStatement)} for * more explanations). * * @param query the CQL query string to prepare. * @return a {@code CompletionStage} that, once complete, will produce the prepared statement. */
@NonNull default CompletionStage<PreparedStatement> prepareAsync(@NonNull String query) { return Objects.requireNonNull( execute(new DefaultPrepareRequest(query), PrepareRequest.ASYNC), "The CQL prepare processor should never return a null result"); }
Prepares a CQL statement asynchronously (the call returns as soon as the prepare query was sent, generally before the statement is prepared).

This variant is exposed in case you use an ad hoc PrepareRequest implementation to customize how attributes are propagated when you prepare a SimpleStatement (see SyncCqlSession.prepare(SimpleStatement) for more explanations). Otherwise, you should rarely have to deal with PrepareRequest directly.

The result of this method is cached (see SyncCqlSession.prepare(SimpleStatement) for more explanations).

Params:
  • request – the PrepareRequest to prepare.
Returns:a CompletionStage that, once complete, will produce the prepared statement.
/** * Prepares a CQL statement asynchronously (the call returns as soon as the prepare query was * sent, generally before the statement is prepared). * * <p>This variant is exposed in case you use an ad hoc {@link PrepareRequest} implementation to * customize how attributes are propagated when you prepare a {@link SimpleStatement} (see {@link * SyncCqlSession#prepare(SimpleStatement)} for more explanations). Otherwise, you should rarely * have to deal with {@link PrepareRequest} directly. * * <p>The result of this method is cached (see {@link SyncCqlSession#prepare(SimpleStatement)} for * more explanations). * * @param request the {@code PrepareRequest} to prepare. * @return a {@code CompletionStage} that, once complete, will produce the prepared statement. */
@NonNull default CompletionStage<PreparedStatement> prepareAsync(PrepareRequest request) { return Objects.requireNonNull( execute(request, PrepareRequest.ASYNC), "The CQL prepare processor should never return a null result"); } }