38 lines
1.3 KiB
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);
|
|
}
|
|
}
|