From 1eb5e16c6bae0c418592b61ca47a80499c00d8f9 Mon Sep 17 00:00:00 2001 From: chuzhongzai Date: Sun, 15 Sep 2024 00:09:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2=E7=9C=9F?= =?UTF-8?q?=E5=AE=9E=E5=8F=AF=E7=94=A8=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configuration/WebComponentConfiguration.java | 2 +- .../com/lion/snss/message/AbstractMessage.java | 1 + .../java/com/lion/snss/message/MessageCodec.java | 1 + .../snss/message/StorageSpaceQueryMessage.java | 7 +++++++ .../snss/service/CommunicateToMainService.java | 16 +++++++++++++++- 5 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/lion/snss/message/StorageSpaceQueryMessage.java diff --git a/src/main/java/com/lion/snss/configuration/WebComponentConfiguration.java b/src/main/java/com/lion/snss/configuration/WebComponentConfiguration.java index 54b0ba8..4d05e41 100644 --- a/src/main/java/com/lion/snss/configuration/WebComponentConfiguration.java +++ b/src/main/java/com/lion/snss/configuration/WebComponentConfiguration.java @@ -14,7 +14,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; ConnectMessage.class, DelayTestMessage.class, DynamicConfigMessage.class, ExtractFileMessage.class, FileOperateMessage.class, FileQueryMessage.class, FileResponseMessage.class, MoveFileRequestMessage.class, MoveFileResponseMessage.class, PairMessage.class, PairResultMessage.class, ResponseMessage.class, ShareFileMessage.class, ShareFileQueryMessage.class, TaskCancelMessage.class, TaskStatusMessage.class, UnPairMessage.class, FileNode.class, Record.class, ShareFile.class, ShareFileDownloadRecord.class, Task.class, - User.class}) + User.class, StorageSpaceQueryMessage.class}) public class WebComponentConfiguration implements WebMvcConfigurer { Interceptor interceptor; diff --git a/src/main/java/com/lion/snss/message/AbstractMessage.java b/src/main/java/com/lion/snss/message/AbstractMessage.java index 2fa6b23..16b8774 100644 --- a/src/main/java/com/lion/snss/message/AbstractMessage.java +++ b/src/main/java/com/lion/snss/message/AbstractMessage.java @@ -26,6 +26,7 @@ public class AbstractMessage { public static final int CONFIG_MESSAGE = 80; public static final int CONNECT_MESSAGE = 90; public static final int DELAY_TEST_MESSAGE = 91; + public static final int STORAGE_SPACE_QUERY_MESSAGE = 92; public int messageType; public int messageId; diff --git a/src/main/java/com/lion/snss/message/MessageCodec.java b/src/main/java/com/lion/snss/message/MessageCodec.java index 771e804..28e2c40 100644 --- a/src/main/java/com/lion/snss/message/MessageCodec.java +++ b/src/main/java/com/lion/snss/message/MessageCodec.java @@ -56,6 +56,7 @@ public class MessageCodec extends ByteToMessageCodec { case AbstractMessage.CONFIG_MESSAGE -> objectMapper.readValue(bytes, ConfigMessage.class); case AbstractMessage.CONNECT_MESSAGE -> objectMapper.readValue(bytes, ConnectMessage.class); case AbstractMessage.DELAY_TEST_MESSAGE -> objectMapper.readValue(bytes, DelayTestMessage.class); + case AbstractMessage.STORAGE_SPACE_QUERY_MESSAGE -> objectMapper.readValue(bytes, StorageSpaceQueryMessage.class); default -> throw new IllegalStateException("Unexpected value: " + type); }; diff --git a/src/main/java/com/lion/snss/message/StorageSpaceQueryMessage.java b/src/main/java/com/lion/snss/message/StorageSpaceQueryMessage.java new file mode 100644 index 0000000..75ca57e --- /dev/null +++ b/src/main/java/com/lion/snss/message/StorageSpaceQueryMessage.java @@ -0,0 +1,7 @@ +package com.lion.snss.message; + +public class StorageSpaceQueryMessage extends AbstractMessage{ + { + messageType = AbstractMessage.STORAGE_SPACE_QUERY_MESSAGE; + } +} diff --git a/src/main/java/com/lion/snss/service/CommunicateToMainService.java b/src/main/java/com/lion/snss/service/CommunicateToMainService.java index b96ef21..f93fcb0 100644 --- a/src/main/java/com/lion/snss/service/CommunicateToMainService.java +++ b/src/main/java/com/lion/snss/service/CommunicateToMainService.java @@ -450,6 +450,9 @@ public class CommunicateToMainService { DelayTestMessage delayTestMessage = (DelayTestMessage) abstractMessage; ctx.channel().writeAndFlush(delayTestToIp(delayTestMessage)); } + case AbstractMessage.STORAGE_SPACE_QUERY_MESSAGE -> { + ctx.channel().writeAndFlush(storageSpaceQuery(abstractMessage.getMessageId())); + } } } @@ -1041,7 +1044,7 @@ public class CommunicateToMainService { try(TarArchiveInputStream tarInput = new TarArchiveInputStream(new BufferedInputStream(new FileInputStream(storagePath + task.getRelativePath() + task.getSourcePath())))) { TarArchiveEntry entry; - while ((entry = tarInput.getNextTarEntry()) != null) { + while ((entry = tarInput.getNextEntry()) != null) { if (entry.isDirectory()) { // 如果是目录,创建相应的目录结构 File dir = new File(storagePath + task.getRelativePath() + task.getTargetPath(), entry.getName()); @@ -1274,5 +1277,16 @@ public class CommunicateToMainService { data[5] = sum / 5; return response.put("data", Arrays.toString(data)).success(); } + + private ResponseMessage storageSpaceQuery(int messageId){ + ResponseMessage responseMessage = new ResponseMessage(messageId); + File file = new File(storagePath); + System.out.println("查询本节点存储空间:"); + responseMessage.put("availableSpace", file.getFreeSpace()); + responseMessage.put("totalSpace", file.getTotalSpace()); + System.out.println(responseMessage.getData()); + responseMessage.success(); + return responseMessage; + } } }