提交 28b18d9d 编写于 作者: T terrymanu

refactor MySQLResponseHandler.channelRead

上级 7875d463
...@@ -66,29 +66,21 @@ public final class MySQLResponseHandler extends ResponseHandler { ...@@ -66,29 +66,21 @@ public final class MySQLResponseHandler extends ResponseHandler {
public void channelRead(final ChannelHandlerContext context, final Object message) { public void channelRead(final ChannelHandlerContext context, final Object message) {
MySQLPacketPayload payload = new MySQLPacketPayload((ByteBuf) message); MySQLPacketPayload payload = new MySQLPacketPayload((ByteBuf) message);
int header = getHeader(payload); int header = getHeader(payload);
if (AuthType.UN_AUTH == authType) { switch (authType) {
auth(context, payload); case UN_AUTH:
authType = AuthType.AUTHING; auth(context, payload);
} else if (AuthType.AUTHING == authType) { return;
if (OKPacket.HEADER == header) { case AUTHING:
okPacket(context, payload); authing(context, payload, header);
authType = AuthType.AUTH_SUCCESS; return;
} else { case AUTH_SUCCESS:
errPacket(context, payload); authSuccess(context, payload, header);
authType = AuthType.AUTH_FAILED; return;
} case AUTH_FAILED:
} else if (AuthType.AUTH_FAILED == authType) { log.error("mysql auth failed, cannot handle channel read message");
log.error("mysql auth failed, cannot handle channel read message"); return;
} else { default:
if (EofPacket.HEADER == header) { throw new UnsupportedOperationException(authType.name());
eofPacket(context, payload);
} else if (OKPacket.HEADER == header) {
okPacket(context, payload);
} else if (ErrPacket.HEADER == header) {
errPacket(context, payload);
} else {
commonPacket(context, payload);
}
} }
} }
...@@ -115,6 +107,29 @@ public final class MySQLResponseHandler extends ResponseHandler { ...@@ -115,6 +107,29 @@ public final class MySQLResponseHandler extends ResponseHandler {
} finally { } finally {
payload.close(); payload.close();
} }
authType = AuthType.AUTHING;
}
private void authing(final ChannelHandlerContext context, final MySQLPacketPayload payload, final int header) {
if (OKPacket.HEADER == header) {
okPacket(context, payload);
authType = AuthType.AUTH_SUCCESS;
} else {
errPacket(context, payload);
authType = AuthType.AUTH_FAILED;
}
}
private void authSuccess(final ChannelHandlerContext context, final MySQLPacketPayload payload, final int header) {
if (EofPacket.HEADER == header) {
eofPacket(context, payload);
} else if (OKPacket.HEADER == header) {
okPacket(context, payload);
} else if (ErrPacket.HEADER == header) {
errPacket(context, payload);
} else {
commonPacket(context, payload);
}
} }
@Override @Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册