| // SPDX-License-Identifier: LGPL-2.1-or-later |
| // Copyright (c) 2012-2014 Monty Program Ab |
| // Copyright (c) 2015-2021 MariaDB Corporation Ab |
| |
| package org.mariadb.jdbc.message.client; |
| |
| import java.io.IOException; |
| import java.sql.SQLException; |
| import org.mariadb.jdbc.client.Context; |
| import org.mariadb.jdbc.client.socket.Writer; |
| import org.mariadb.jdbc.export.Prepare; |
| import org.mariadb.jdbc.message.ClientMessage; |
| |
| /** Client message that can be replayed */ |
| public interface RedoableClientMessage extends ClientMessage { |
| |
| /** Save parameters of command that can be re-executed */ |
| default void saveParameters() {} |
| |
| /** |
| * Ensure that command can be replayed |
| * |
| * @param context connection context |
| * @throws IOException If socket error occurs |
| * @throws SQLException for other type of issue |
| */ |
| default void ensureReplayable(Context context) throws IOException, SQLException {} |
| |
| /** |
| * Encode command to packet |
| * |
| * @param writer socket writer |
| * @param context connection context |
| * @param newPrepareResult new prepare result if prepare has been changed |
| * @return number of send command |
| * @throws IOException if any socket error is issued |
| * @throws SQLException if any other kind of error occurs during encoding |
| */ |
| default int encode(Writer writer, Context context, Prepare newPrepareResult) |
| throws IOException, SQLException { |
| return encode(writer, context); |
| } |
| |
| /** |
| * re-encode command to packet |
| * |
| * @param writer socket writer |
| * @param context connection context |
| * @param newPrepareResult new prepare result if prepare has been changed |
| * @return number of send command |
| * @throws IOException if any socket error is issued |
| * @throws SQLException if any other kind of error occurs during encoding |
| */ |
| default int reEncode(Writer writer, Context context, Prepare newPrepareResult) |
| throws IOException, SQLException { |
| return encode(writer, context, newPrepareResult); |
| } |
| } |