Skip to content

Commit bc94dd9

Browse files
committed
Fix close/attach session
1 parent 7ce0b0c commit bc94dd9

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/fileop/FileOpHandlersHolder.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,52 @@ public void addHandlersToRouter(final @NotNull Router router) {
9090

9191
log.info("Putting chunkedFile into the local map");
9292
map.put("chunkedFile", chunkedFileWrapper);
93+
map.put("openedFilename", filename);
9394

9495
map.put("TileStatisticHolder", TileStatisticHolder.newDefaultStatisticHolder(chunkedFile.getResolutions().length));
9596

9697
ctx.response().end(Json.encode(generateOpenFileResponse(chunkedFile)));
9798
});
9899

100+
router.post("/attach").blockingHandler(ctx -> {
101+
final @NotNull @NonNull LocalMap<String, Object> map = vertx.sharedData().getLocalMap("hict_server");
102+
final var chunkedFileWrapper = ((ShareableWrappers.ChunkedFileWrapper) (map.get("chunkedFile")));
103+
if (chunkedFileWrapper == null) {
104+
ctx.response()
105+
.setStatusCode(404)
106+
.putHeader("content-type", "application/json")
107+
.end(Json.encode(new io.vertx.core.json.JsonObject().put("error", "No session to attach")));
108+
return;
109+
}
110+
final var chunkedFile = chunkedFileWrapper.getChunkedFile();
111+
final var filename = (String) map.getOrDefault("openedFilename", "");
112+
ctx.response()
113+
.putHeader("content-type", "application/json")
114+
.end(Json.encode(
115+
new io.vertx.core.json.JsonObject()
116+
.put("filename", filename)
117+
.put("openFileResponse", generateOpenFileResponse(chunkedFile))
118+
));
119+
});
120+
121+
router.post("/close").blockingHandler(ctx -> {
122+
final @NotNull @NonNull LocalMap<String, Object> map = vertx.sharedData().getLocalMap("hict_server");
123+
final var chunkedFileWrapper = ((ShareableWrappers.ChunkedFileWrapper) (map.get("chunkedFile")));
124+
if (chunkedFileWrapper != null) {
125+
try {
126+
chunkedFileWrapper.getChunkedFile().close();
127+
} catch (Exception e) {
128+
log.warn("Failed to close chunked file", e);
129+
}
130+
}
131+
map.remove("chunkedFile");
132+
map.remove("TileStatisticHolder");
133+
map.remove("openedFilename");
134+
ctx.response()
135+
.putHeader("content-type", "application/json")
136+
.end(Json.encode(new io.vertx.core.json.JsonObject().put("status", "closed")));
137+
});
138+
99139
router.post("/get_agp_for_assembly").blockingHandler(ctx -> {
100140
final @NotNull @NonNull LocalMap<String, Object> map = vertx.sharedData().getLocalMap("hict_server");
101141
log.debug("Got map");

version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.52-9256ff6-webui_90d843f
1+
1.0.54-7ce0b0c-webui_90d843f

0 commit comments

Comments
 (0)