Search in sources :

Example 1 with Rows

use of com.datastax.oss.protocol.internal.response.result.Rows in project java-driver by datastax.

the class AdminRequestHandler method onResponse.

@Override
public void onResponse(Frame responseFrame) {
    if (timeoutFuture != null) {
        timeoutFuture.cancel(true);
    }
    Message message = responseFrame.message;
    LOG.debug("[{}] Got response {}", logPrefix, responseFrame.message);
    if (!expectedResponseType.isInstance(message)) {
        // Note that this also covers error responses, no need to get too fancy here
        setFinalError(new UnexpectedResponseException(debugString, message));
    } else if (expectedResponseType == Rows.class) {
        Rows rows = (Rows) message;
        ByteBuffer pagingState = rows.getMetadata().pagingState;
        AdminRequestHandler nextHandler = (pagingState == null) ? null : this.copy(pagingState);
        // The public factory methods guarantee that expectedResponseType and ResultT always match:
        @SuppressWarnings("unchecked") ResultT result = (ResultT) new AdminResult(rows, nextHandler, channel.protocolVersion());
        setFinalResult(result);
    } else if (expectedResponseType == Prepared.class) {
        Prepared prepared = (Prepared) message;
        @SuppressWarnings("unchecked") ResultT result = (ResultT) ByteBuffer.wrap(prepared.preparedQueryId);
        setFinalResult(result);
    } else if (expectedResponseType == com.datastax.oss.protocol.internal.response.result.Void.class) {
        setFinalResult(null);
    } else {
        setFinalError(new AssertionError("Unhandled response type" + expectedResponseType));
    }
}
Also used : Message(com.datastax.oss.protocol.internal.Message) Prepared(com.datastax.oss.protocol.internal.response.result.Prepared) ByteBuffer(java.nio.ByteBuffer) Rows(com.datastax.oss.protocol.internal.response.result.Rows)

Example 2 with Rows

use of com.datastax.oss.protocol.internal.response.result.Rows in project java-driver by datastax.

the class GraphRequestHandler method setFinalResult.

private void setFinalResult(Result resultMessage, Frame responseFrame, NodeResponseCallback callback) {
    try {
        ExecutionInfo executionInfo = buildExecutionInfo(callback, responseFrame);
        DriverExecutionProfile executionProfile = Conversions.resolveExecutionProfile(callback.statement, context);
        GraphProtocol subProtocol = GraphConversions.resolveGraphSubProtocol(callback.statement, graphSupportChecker, context);
        Queue<GraphNode> graphNodes = new ArrayDeque<>();
        for (List<ByteBuffer> row : ((Rows) resultMessage).getData()) {
            if (subProtocol.isGraphBinary()) {
                graphNodes.offer(GraphConversions.createGraphBinaryGraphNode(row, GraphRequestHandler.this.graphBinaryModule));
            } else {
                graphNodes.offer(GraphSONUtils.createGraphNode(row, subProtocol));
            }
        }
        DefaultAsyncGraphResultSet resultSet = new DefaultAsyncGraphResultSet(executionInfo, graphNodes, subProtocol);
        if (result.complete(resultSet)) {
            cancelScheduledTasks();
            throttler.signalSuccess(this);
            // Only call nanoTime() if we're actually going to use it
            long completionTimeNanos = NANOTIME_NOT_MEASURED_YET, totalLatencyNanos = NANOTIME_NOT_MEASURED_YET;
            if (!(requestTracker instanceof NoopRequestTracker)) {
                completionTimeNanos = System.nanoTime();
                totalLatencyNanos = completionTimeNanos - startTimeNanos;
                long nodeLatencyNanos = completionTimeNanos - callback.nodeStartTimeNanos;
                requestTracker.onNodeSuccess(callback.statement, nodeLatencyNanos, executionProfile, callback.node, logPrefix);
                requestTracker.onSuccess(callback.statement, totalLatencyNanos, executionProfile, callback.node, logPrefix);
            }
            if (sessionMetricUpdater.isEnabled(DseSessionMetric.GRAPH_REQUESTS, executionProfile.getName())) {
                if (completionTimeNanos == NANOTIME_NOT_MEASURED_YET) {
                    completionTimeNanos = System.nanoTime();
                    totalLatencyNanos = completionTimeNanos - startTimeNanos;
                }
                sessionMetricUpdater.updateTimer(DseSessionMetric.GRAPH_REQUESTS, executionProfile.getName(), totalLatencyNanos, TimeUnit.NANOSECONDS);
            }
        }
        // log the warnings if they have NOT been disabled
        if (!executionInfo.getWarnings().isEmpty() && executionProfile.getBoolean(DefaultDriverOption.REQUEST_LOG_WARNINGS) && LOG.isWarnEnabled()) {
            logServerWarnings(callback.statement, executionInfo.getWarnings());
        }
    } catch (Throwable error) {
        setFinalError(callback.statement, error, callback.node, NO_SUCCESSFUL_EXECUTION);
    }
}
Also used : DriverExecutionProfile(com.datastax.oss.driver.api.core.config.DriverExecutionProfile) DefaultExecutionInfo(com.datastax.oss.driver.internal.core.cql.DefaultExecutionInfo) ExecutionInfo(com.datastax.oss.driver.api.core.cql.ExecutionInfo) GraphNode(com.datastax.dse.driver.api.core.graph.GraphNode) ByteBuffer(java.nio.ByteBuffer) ArrayDeque(java.util.ArrayDeque) NoopRequestTracker(com.datastax.oss.driver.internal.core.tracker.NoopRequestTracker) Rows(com.datastax.oss.protocol.internal.response.result.Rows)

Example 3 with Rows

use of com.datastax.oss.protocol.internal.response.result.Rows in project java-driver by datastax.

the class Conversions method toResultSet.

public static AsyncResultSet toResultSet(Result result, ExecutionInfo executionInfo, CqlSession session, InternalDriverContext context) {
    if (result instanceof Rows) {
        Rows rows = (Rows) result;
        Statement<?> statement = (Statement<?>) executionInfo.getRequest();
        ColumnDefinitions columnDefinitions = getResultDefinitions(rows, statement, context);
        return new DefaultAsyncResultSet(columnDefinitions, executionInfo, rows.getData(), session, context);
    } else if (result instanceof Prepared) {
        // This should never happen
        throw new IllegalArgumentException("Unexpected PREPARED response to a CQL query");
    } else {
        // Void, SetKeyspace, SchemaChange
        return DefaultAsyncResultSet.empty(executionInfo);
    }
}
Also used : ColumnDefinitions(com.datastax.oss.driver.api.core.cql.ColumnDefinitions) SimpleStatement(com.datastax.oss.driver.api.core.cql.SimpleStatement) BoundStatement(com.datastax.oss.driver.api.core.cql.BoundStatement) BatchableStatement(com.datastax.oss.driver.api.core.cql.BatchableStatement) BatchStatement(com.datastax.oss.driver.api.core.cql.BatchStatement) PreparedStatement(com.datastax.oss.driver.api.core.cql.PreparedStatement) Statement(com.datastax.oss.driver.api.core.cql.Statement) Prepared(com.datastax.oss.protocol.internal.response.result.Prepared) Rows(com.datastax.oss.protocol.internal.response.result.Rows)

Aggregations

Rows (com.datastax.oss.protocol.internal.response.result.Rows)3 Prepared (com.datastax.oss.protocol.internal.response.result.Prepared)2 ByteBuffer (java.nio.ByteBuffer)2 GraphNode (com.datastax.dse.driver.api.core.graph.GraphNode)1 DriverExecutionProfile (com.datastax.oss.driver.api.core.config.DriverExecutionProfile)1 BatchStatement (com.datastax.oss.driver.api.core.cql.BatchStatement)1 BatchableStatement (com.datastax.oss.driver.api.core.cql.BatchableStatement)1 BoundStatement (com.datastax.oss.driver.api.core.cql.BoundStatement)1 ColumnDefinitions (com.datastax.oss.driver.api.core.cql.ColumnDefinitions)1 ExecutionInfo (com.datastax.oss.driver.api.core.cql.ExecutionInfo)1 PreparedStatement (com.datastax.oss.driver.api.core.cql.PreparedStatement)1 SimpleStatement (com.datastax.oss.driver.api.core.cql.SimpleStatement)1 Statement (com.datastax.oss.driver.api.core.cql.Statement)1 DefaultExecutionInfo (com.datastax.oss.driver.internal.core.cql.DefaultExecutionInfo)1 NoopRequestTracker (com.datastax.oss.driver.internal.core.tracker.NoopRequestTracker)1 Message (com.datastax.oss.protocol.internal.Message)1 ArrayDeque (java.util.ArrayDeque)1