[FEATURE] Топорная реализация скачивания

This commit is contained in:
Gravit 2019-04-03 20:37:31 +07:00
parent bda1c3658b
commit 221666df3e
No known key found for this signature in database
GPG key ID: 061981E1E85D3216
2 changed files with 16 additions and 4 deletions

View file

@ -3,6 +3,7 @@
import ru.gravit.launcher.Launcher; import ru.gravit.launcher.Launcher;
import ru.gravit.launcher.LauncherAPI; import ru.gravit.launcher.LauncherAPI;
import ru.gravit.launcher.LauncherConfig; import ru.gravit.launcher.LauncherConfig;
import ru.gravit.launcher.downloader.ListDownloader;
import ru.gravit.launcher.events.request.UpdateRequestEvent; import ru.gravit.launcher.events.request.UpdateRequestEvent;
import ru.gravit.launcher.hasher.FileNameMatcher; import ru.gravit.launcher.hasher.FileNameMatcher;
import ru.gravit.launcher.hasher.HashedDir; import ru.gravit.launcher.hasher.HashedDir;
@ -32,10 +33,8 @@
import java.security.SignatureException; import java.security.SignatureException;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.LinkedList; import java.util.*;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Objects;
import java.util.Queue;
import java.util.zip.InflaterInputStream; import java.util.zip.InflaterInputStream;
public final class UpdateRequest extends Request<UpdateRequestEvent> implements RequestInterface { public final class UpdateRequest extends Request<UpdateRequestEvent> implements RequestInterface {
@ -200,7 +199,18 @@ private static void fillActionsQueue(Queue<UpdateAction> queue, HashedDir mismat
@Override @Override
public UpdateRequestEvent requestWebSockets() throws Exception { public UpdateRequestEvent requestWebSockets() throws Exception {
return (UpdateRequestEvent) LegacyRequestBridge.sendRequest(this); UpdateRequestEvent e = (UpdateRequestEvent) LegacyRequestBridge.sendRequest(this);
Launcher.profile.pushOptionalFile(e.hdir, !Launcher.profile.isUpdateFastCheck());
HashedDir.Diff diff = e.hdir.diff(localDir, matcher);
final List<String> adds = new ArrayList<>();
diff.mismatch.map().entrySet().stream().filter(e1 -> e1.getValue().getType().equals(HashedEntry.Type.FILE)).forEach(a -> {
adds.add(a.getKey());
});
totalSize = diff.mismatch.size();
ListDownloader listDownloader = new ListDownloader();
listDownloader.download(e.url, adds, dir);
deleteExtraDir(dir, diff.extra, diff.extra.flag);
return e;
} }
// Instance // Instance

View file

@ -7,6 +7,8 @@
public class UpdateRequestEvent implements ResultInterface { public class UpdateRequestEvent implements ResultInterface {
@LauncherNetworkAPI @LauncherNetworkAPI
public HashedDir hdir; public HashedDir hdir;
@LauncherNetworkAPI
public String url;
@Override @Override
public String getType() { public String getType() {