去除远程压缩;删除不再区分删除模式,直接全部删除;去除更新;
This commit is contained in:
parent
b185be1a1c
commit
6d79278c74
@ -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" />
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -1,2 +0,0 @@
|
||||
config.stopBubbling=true
|
||||
lombok.equalsAndHashCode.callSuper=call
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
};
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user