FileTransfer/FileTransferService/src/main/java/com/xiaoliu/handler/FilePacketServerHandler.java

38 lines
1.3 KiB
Java

package com.xiaoliu.handler;
import com.xiaoliu.protocol.FilePacket;
import com.xiaoliu.protocol.request.LoginPacket;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
import java.io.FileOutputStream;
import static com.xiaoliu.protocol.attribute.Attributes.userAttr;
@Slf4j
@ChannelHandler.Sharable
public class FilePacketServerHandler extends SimpleChannelInboundHandler<FilePacket> {
@Override
protected void channelRead0(ChannelHandlerContext ctx, FilePacket packet) throws Exception {
File file = packet.getFile();
log.info("receive file from client: {}", file.getName());
LoginPacket loginPacket = ctx.channel().attr(userAttr).get();
if(loginPacket.isExec()){
return;
}
loginPacket.setExec(true);
loginPacket.setFileName(file.getName());
loginPacket.setFileLength(packet.getFileLength());
loginPacket.setFileOutputStream(new FileOutputStream(new File("./service-receive-" + file.getName())));
// FileReceiveServerHandler.fileLength = file.length();
// FileReceiveServerHandler.outputStream = new FileOutputStream(
// new File("./server-receive-" + file.getName())
// );
packet.setACK(packet.getACK() + 1);
ctx.writeAndFlush(packet);
}
}