package com.tesora.dve.db; /* * #%L * Tesora Inc. * Database Virtualization Engine * %% * Copyright (C) 2011 - 2014 Tesora Inc. * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License, version 3, * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * #L% */ import com.tesora.dve.concurrent.CompletionHandle; import com.tesora.dve.db.mysql.MysqlMessage; import com.tesora.dve.db.mysql.portal.protocol.MSPComStmtCloseRequestMessage; import com.tesora.dve.db.mysql.portal.protocol.MysqlGroupedPreparedStatementId; import com.tesora.dve.db.mysql.MysqlStmtCloseCommand; import com.tesora.dve.db.mysql.libmy.MyPreparedStatement; import com.tesora.dve.server.messaging.SQLCommand; public class MysqlStmtCloseDiscarder extends DBResultConsumer { final MyPreparedStatement<MysqlGroupedPreparedStatementId> pstmt; final Long pstmtID; public MysqlStmtCloseDiscarder( MyPreparedStatement<MysqlGroupedPreparedStatementId> pstmt) { super(); this.pstmt = pstmt; this.pstmtID = null; } public MysqlStmtCloseDiscarder(long pstmtID) { super(); this.pstmt = null; this.pstmtID = pstmtID; } @Override public Bundle getDispatchBundle(CommandChannel channel, SQLCommand sql, CompletionHandle<Boolean> promise) { int preparedID; if (pstmt != null) preparedID = (int)pstmt.getStmtId().getStmtId(channel.getPhysicalID()); else preparedID = (int)pstmtID.longValue(); MysqlMessage message = MSPComStmtCloseRequestMessage.newMessage(preparedID); return new Bundle(message, new MysqlStmtCloseCommand(preparedID, promise) ); } }