去除远程压缩;删除不再区分删除模式,直接全部删除;去除更新;

This commit is contained in:
chuzhongzai 2023-12-23 13:22:17 +08:00
parent b185be1a1c
commit 6d79278c74
10 changed files with 9 additions and 149 deletions

View File

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
@ -6,6 +7,7 @@
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
<option name="workspaceImportForciblyTurnedOn" value="true" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />

View File

@ -10,8 +10,6 @@ public class AbstractMessage {
public static final byte RESPONSE_MESSAGE = 0;
public static final byte UPDATE_GALLERY_MESSAGE = 4;
public static final byte GALLERY_PAGE_QUERY_MESSAGE = 5;
public static final byte IDENTITY_MESSAGE = 6;

View File

@ -1,14 +0,0 @@
package lion.Message.Acclerator;
import lion.Message.AbstractMessage;
import lombok.Data;
@Data
public class FileTransferMessage extends AbstractMessage {
{
messageType = FILE_TRANSFER_MESSAGE;
}
String filename;
int port;
boolean isThumbnail;
}

View File

@ -1,2 +0,0 @@
config.stopBubbling=true
lombok.equalsAndHashCode.callSuper=call

View File

@ -8,14 +8,5 @@ public class DeleteGalleryMessage extends AbstractMessage {
{
messageType = DELETE_GALLERY_MESSAGE;
}
public static final byte DELETE_ALL = 3;
public static final byte DELETE_PREVIEW = 2;
public static final byte DELETE_SOURCE = 1;
byte deleteType;
String galleryName;
}

View File

@ -1,14 +0,0 @@
package lion.Message.Main;
import lion.Domain.GalleryTask;
import lion.Message.AbstractMessage;
import lombok.Data;
@Data
public class UpdateGalleryMessage extends AbstractMessage {
{
messageType = UPDATE_GALLERY_MESSAGE;
}
GalleryTask galleryTask;
}

View File

@ -44,12 +44,10 @@ public class MessageCodec extends ByteToMessageCodec<AbstractMessage> {
case AbstractMessage.DOWNLOAD_STATUS_MESSAGE -> objectMapper.readValue(metadata, DownloadStatusMessage.class);
case AbstractMessage.GALLERY_REQUEST_MESSAGE -> objectMapper.readValue(metadata, GalleryRequestMessage.class);
case AbstractMessage.RESPONSE_MESSAGE -> objectMapper.readValue(metadata, ResponseMessage.class);
case AbstractMessage.UPDATE_GALLERY_MESSAGE -> objectMapper.readValue(metadata, UpdateGalleryMessage.class);
case AbstractMessage.DELETE_GALLERY_MESSAGE -> objectMapper.readValue(metadata, DeleteGalleryMessage.class);
case AbstractMessage.GALLERY_PAGE_QUERY_MESSAGE -> objectMapper.readValue(metadata, GalleryPageQueryMessage.class);
case AbstractMessage.IDENTITY_MESSAGE -> objectMapper.readValue(metadata, IdentityMessage.class);
case AbstractMessage.MAINTAIN_MESSAGE -> objectMapper.readValue(metadata, MaintainMessage.class);
case AbstractMessage.FILE_TRANSFER_MESSAGE -> objectMapper.readValue(metadata, FileTransferMessage.class);
default -> null;
};

View File

@ -11,35 +11,9 @@ public class DeleteService {
if(!file.isDirectory())
return ErrorCode.FILE_NOT_FOUND;
if (FileUtil.del(path)) {
if (FileUtil.del(path))
return 0;
}else{
else
return ErrorCode.IO_ERROR;
}
}
public static byte deletePreview(String path){
File directory = new File(path);
File[] files = directory.listFiles((dir, name) -> !name.endsWith("zip"));
if(files == null)
return ErrorCode.FILE_NOT_FOUND;
for (File file : files)
if(!FileUtil.del(file))
return ErrorCode.IO_ERROR;
return 0;
}
public static byte deleteSource(String path){
File directory = new File(path);
File[] files = directory.listFiles((dir, name) -> name.endsWith("zip"));
if(files == null)
return ErrorCode.FILE_NOT_FOUND;
if(!FileUtil.del(files[0]))
return ErrorCode.IO_ERROR;
return 0;
}
}

View File

@ -3,15 +3,12 @@ package lion.Service;
import io.netty.channel.Channel;
import io.netty.channel.DefaultEventLoop;
import io.netty.channel.EventLoop;
import io.netty.util.concurrent.DefaultPromise;
import io.netty.util.concurrent.Promise;
import lion.CustomUtil;
import lion.Domain.GalleryTask;
import lion.ErrorCode.ErrorCode;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ZipUtil;
import lion.Message.AbstractMessage;
import lion.Message.Acclerator.FileTransferMessage;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.im4java.core.ConvertCmd;
@ -19,12 +16,7 @@ import org.im4java.core.IM4JavaException;
import org.im4java.core.IMOperation;
import java.io.*;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.file.Files;
import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
@ -142,14 +134,12 @@ public class DownloadCheckService {
//thumbnail
log.info("文件" + images[0].getName() + "转换为thumbnail.webp");
if(!convert_remote(galleryTask, images[0], true))
convert_local(galleryTask, images[0], true);
convert_local(galleryTask, images[0], true);
if ((galleryTask.getType() & GalleryTask.DOWNLOAD_PREVIEW) != 0)
for (int i = 0; i < images.length; i++) {
log.info("文件" + images[i].getName() + "转换为webp[" + i + "/" + images.length + "]");
if(!convert_remote(galleryTask, images[i], false))
convert_local(galleryTask, images[i], false);
convert_local(galleryTask, images[i], false);
}
if ((galleryTask.getType() & GalleryTask.DOWNLOAD_SOURCE) != 0) {
@ -181,40 +171,4 @@ public class DownloadCheckService {
galleryTask.setStatus(ErrorCode.COMPRESS_ERROR);
}
}
public boolean convert_remote(GalleryTask galleryTask, File file, boolean isThumbnail){
if(node == null || !node.isActive() || file.length() < 1024 * 1024 * 5)
return false;
int port = CustomUtil._findIdlePort();
FileTransferMessage fileTransferMessage = new FileTransferMessage();
fileTransferMessage.messageId = CustomUtil.counter.getAndIncrement();
fileTransferMessage.setFilename(file.getName());
fileTransferMessage.setPort(port);
fileTransferMessage.setThumbnail(isThumbnail);
try(ServerSocket serverSocket = new ServerSocket(port);
InputStream inputStream = Files.newInputStream(file.toPath())){
node.writeAndFlush(fileTransferMessage).sync();
Socket socket = serverSocket.accept();
inputStream.transferTo(socket.getOutputStream());
socket.close();
}catch (IOException | InterruptedException e){
return false;
}
DefaultPromise<AbstractMessage> promise = new DefaultPromise<>(eventLoop);
promises.put(fileTransferMessage.messageId, promise);
try (Socket socket = new Socket()){
boolean result = promise.await(20, TimeUnit.SECONDS);
if(!result)
return false;
fileTransferMessage = (FileTransferMessage) promise.get();
socket.connect(new InetSocketAddress("side.lionwebsite.xyz", fileTransferMessage.getPort()));
FileOutputStream fileOutputStream = new FileOutputStream(storagePath + galleryTask.getName() + "/" + fileTransferMessage.getFilename());
socket.getInputStream().transferTo(fileOutputStream);
return true;
} catch (InterruptedException | ExecutionException | IOException e) {
return false;
}
}
}

View File

@ -3,12 +3,10 @@ package lion;
import io.netty.util.concurrent.Promise;
import lion.Domain.GalleryTask;
import lion.Message.*;
import lion.Message.Acclerator.FileTransferMessage;
import lion.Message.Main.*;
import lion.Service.DeleteService;
import lion.Service.DeliveryService;
import lion.Service.DownloadCheckService;
import cn.hutool.core.io.FileUtil;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
@ -59,7 +57,6 @@ public class storageNode {
counter = 0;
promises = new HashMap<>();
channelFuture = new ServerBootstrap()
.channel(NioServerSocketChannel.class)
.group(new NioEventLoopGroup())
@ -73,9 +70,8 @@ public class storageNode {
})
.bind(26321);
try{
new Socket().connect(new InetSocketAddress("lionwebsite.xyz", 26322));
new Socket().connect(new InetSocketAddress("side.lionwebsite.xyz", 26322));
try(Socket socket = new Socket()){
socket.connect(new InetSocketAddress("lionwebsite.xyz", 26322));
} catch (Exception ignored) {}
downloadCheckService = new DownloadCheckService(queue, promises);
checkThreadPool = Executors.newScheduledThreadPool(1);
@ -134,12 +130,6 @@ public class storageNode {
AbstractMessage abstractMessage = (AbstractMessage) msg;
switch (abstractMessage.messageType){
case AbstractMessage.FILE_TRANSFER_MESSAGE -> {
FileTransferMessage fileTransferMessage = (FileTransferMessage) abstractMessage;
Promise<AbstractMessage> abstractMessagePromise = promises.get(fileTransferMessage.messageId);
if(abstractMessagePromise != null)
abstractMessagePromise.setSuccess(fileTransferMessage);
}
case AbstractMessage.IDENTITY_MESSAGE -> {
IdentityMessage identityMessage = (IdentityMessage) abstractMessage;
if(identityMessage.getIdentity().equals("lionwebsite")) {
@ -161,15 +151,7 @@ public class storageNode {
}
case AbstractMessage.DELETE_GALLERY_MESSAGE -> {
DeleteGalleryMessage deleteGalleryMessage = (DeleteGalleryMessage) abstractMessage;
byte result = switch (deleteGalleryMessage.getDeleteType()){
case DeleteGalleryMessage.DELETE_ALL ->
DeleteService.deleteAll(storagePath + deleteGalleryMessage.getGalleryName());
case DeleteGalleryMessage.DELETE_PREVIEW ->
DeleteService.deletePreview(storagePath + deleteGalleryMessage.getGalleryName());
case DeleteGalleryMessage.DELETE_SOURCE ->
DeleteService.deleteSource(storagePath + deleteGalleryMessage.getGalleryName());
default -> -1;
};
byte result = DeleteService.deleteAll(storagePath + deleteGalleryMessage.getGalleryName());
ResponseMessage responseMessage = new ResponseMessage(deleteGalleryMessage.messageId, result);
ctx.writeAndFlush(responseMessage);
}
@ -182,15 +164,6 @@ public class storageNode {
responseMessage.setResult(result);
ctx.writeAndFlush(responseMessage);
}
case AbstractMessage.UPDATE_GALLERY_MESSAGE -> {
UpdateGalleryMessage ugm = (UpdateGalleryMessage) abstractMessage;
FileUtil.del(storagePath + ugm.getGalleryTask().getName());
lock.lock();
queue.add(ugm.getGalleryTask());
System.out.println(queue);
lock.unlock();
ctx.writeAndFlush(new ResponseMessage(ugm.messageId, (byte) 0));
}
case AbstractMessage.GALLERY_PAGE_QUERY_MESSAGE -> {
GalleryPageQueryMessage gpqm = (GalleryPageQueryMessage) abstractMessage;
byte result = DeliveryService.pageQuery(gpqm);