org.bdware.dogp.NettyDOGPAddressHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of doip-audit-tool Show documentation
Show all versions of doip-audit-tool Show documentation
doip audit tool developed by bdware
/*
* Copyright (c) [2021] [Peking University]
* [BDWare DOIP SDK] is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package org.bdware.dogp;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.bdware.dogp.codec.DOGPMessage;
@ChannelHandler.Sharable
public class NettyDOGPAddressHandler extends SimpleChannelInboundHandler {
static Logger logger = LogManager.getLogger(NettyDOGPAddressHandler.class);
protected DOGPRequestHandler requestHandler;
public NettyDOGPAddressHandler(DOGPRequestHandler handler) {
this.requestHandler = handler;
}
@Override
protected void channelRead0(ChannelHandlerContext ctx, DOGPMessage msg) {
try {
DOGPMessage response = requestHandler.onRequest(ctx, msg);
sendResponse(ctx, msg, response);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void channelActive(ChannelHandlerContext ctx) {
}
private void sendResponse(ChannelHandlerContext ctx, DOGPMessage request, DOGPMessage response) {
if (response == null) return;
if (request != null && request.getSender() != null) {
response.setSender(request.getSender());
}
// for (; !ctx.channel().isWritable(); ) {
// Thread.yield();
// logger.info("network busy, yeild");
//}
ctx.writeAndFlush(response);
}
}