/*
* Copyright 2015 Liu Huanting.
*
* 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 fm.liu.timo.server.session.handler;
import java.util.List;
import fm.liu.timo.mysql.connection.MySQLConnection;
import fm.liu.timo.net.connection.BackendConnection;
/**
* @author Liu Huanting 2015年5月9日
*/
public abstract class OKResultHandler implements ResultHandler {
protected abstract void success(BackendConnection con);
protected abstract void failed(String err);
@Override
public void ok(byte[] ok, BackendConnection con) {
success(con);
}
@Override
public void error(byte[] err, BackendConnection con) {
String error = new String(err);
failed(error);
closeConnection(con, error);
}
@Override
public void field(byte[] header, List<byte[]> fields, byte[] eof, BackendConnection con) {
String error = "unexpected response";
failed(error);
closeConnection(con, error);
}
@Override
public void row(byte[] row, BackendConnection con) {
String error = "unexpected response";
failed(error);
closeConnection(con, error);
}
@Override
public void eof(byte[] eof, BackendConnection con) {
String error = "unexpected response";
failed(error);
closeConnection(con, error);
}
@Override
public void close(String reason) {
failed(reason);
}
private void closeConnection(BackendConnection con, String error) {
if (con instanceof MySQLConnection) {
((MySQLConnection) con).setResultHandler(null);
}
con.close(error);
}
}