登陆时查询真实可用空间而不是存储在数据库的空间
This commit is contained in:
parent
40b52013b7
commit
bfe3a7fd82
@ -15,7 +15,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
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, Progress.class, Record.class, ShareFile.class, ShareFileDownloadRecord.class, Site.class, Task.class,
|
||||
User.class})
|
||||
User.class, StorageSpaceQueryMessage.class})
|
||||
public class BeanConfiguration {
|
||||
|
||||
// @Resource
|
||||
|
||||
@ -46,7 +46,7 @@ public class indexController {
|
||||
@GetMapping("/getSites")
|
||||
@ResponseBody
|
||||
public String getSites(@SessionAttribute("id") Integer userid){
|
||||
return siteService.getSites(userid);
|
||||
return userid == 1 ? siteService.getSites(): siteService.getSites(userid);
|
||||
}
|
||||
|
||||
@GetMapping("/getFileByShareCode/**")
|
||||
|
||||
@ -28,6 +28,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;
|
||||
|
||||
|
||||
|
||||
|
||||
@ -47,6 +47,7 @@ public class MessageCodec extends ByteToMessageCodec<AbstractMessage> {
|
||||
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);
|
||||
};
|
||||
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
package com.lion.sns.message;
|
||||
|
||||
public class StorageSpaceQueryMessage extends AbstractMessage{
|
||||
{
|
||||
messageType = AbstractMessage.STORAGE_SPACE_QUERY_MESSAGE;
|
||||
}
|
||||
}
|
||||
@ -6,10 +6,7 @@ import com.lion.sns.ScalableNetworkStorageApplication;
|
||||
import com.lion.sns.dao.CustomConfigurationMapper;
|
||||
import com.lion.sns.dao.ShareFileMapper;
|
||||
import com.lion.sns.dao.SiteMapper;
|
||||
import com.lion.sns.message.ConfigMessage;
|
||||
import com.lion.sns.message.DelayTestMessage;
|
||||
import com.lion.sns.message.ResponseMessage;
|
||||
import com.lion.sns.message.UnPairMessage;
|
||||
import com.lion.sns.message.*;
|
||||
import com.lion.sns.pojo.ShareFile;
|
||||
import com.lion.sns.pojo.Site;
|
||||
import com.lion.sns.pojo.User;
|
||||
@ -22,6 +19,9 @@ import java.io.IOException;
|
||||
import java.net.Inet4Address;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@Service
|
||||
@ -159,7 +159,35 @@ public class SiteService {
|
||||
public String getSites() {
|
||||
Response response = new Response();
|
||||
ArrayList<Site> sites = siteMapper.selectAllSite();
|
||||
|
||||
try(ExecutorService executorService = Executors.newFixedThreadPool(sites.size() - 1)) {
|
||||
sites.forEach(site -> {
|
||||
//直接查本地空间
|
||||
if (site.getId() == 1) {
|
||||
File file = new File(site.getStoragePath());
|
||||
site.setAvailableSpace(file.getFreeSpace());
|
||||
site.setTotalSpace(file.getTotalSpace());
|
||||
} else {
|
||||
//查询远程节点空间
|
||||
executorService.submit(() -> {
|
||||
//判断节点是否在线
|
||||
if(communicateService.sessions.containsKey(site.getId())) {
|
||||
System.out.println("查询id" + site.getId() + "的存储空间");
|
||||
ResponseMessage responseMessage = communicateService.sendMessageToSite(site.getId(), new StorageSpaceQueryMessage());
|
||||
if (responseMessage.isResult()) {
|
||||
System.out.println("查询id" + site.getId() + "成功");
|
||||
System.out.println(responseMessage.getData().toString());
|
||||
site.setAvailableSpace(Long.parseLong(responseMessage.get("availableSpace")));
|
||||
site.setTotalSpace(Long.parseLong(responseMessage.get("totalSpace")));
|
||||
} else {
|
||||
System.out.println("查询id" + site.getId() + "失败");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
executorService.shutdown();
|
||||
executorService.awaitTermination(10, TimeUnit.SECONDS);
|
||||
} catch (Exception ignored) {}
|
||||
response.success(objectMapper.valueToTree(sites));
|
||||
return response.toJSONString();
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user