]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/messageCache/CachedMessage.java
e053b91fb4e23276f1f19a578f04bf5293510f7e
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / messageCache / CachedMessage.java
1 package org.asamk.signal.manager.storage.messageCache;
2
3 import org.asamk.signal.manager.util.MessageCacheUtils;
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6 import org.whispersystems.signalservice.api.messages.SignalServiceEnvelope;
7
8 import java.io.File;
9 import java.io.IOException;
10 import java.nio.file.Files;
11
12 public final class CachedMessage {
13
14 private final static Logger logger = LoggerFactory.getLogger(CachedMessage.class);
15
16 private final File file;
17
18 private SignalServiceEnvelope envelope;
19
20 CachedMessage(final File file) {
21 this.file = file;
22 }
23
24 CachedMessage(final File file, SignalServiceEnvelope envelope) {
25 this.file = file;
26 this.envelope = envelope;
27 }
28
29 File getFile() {
30 return file;
31 }
32
33 public SignalServiceEnvelope loadEnvelope() {
34 if (envelope == null) {
35 try {
36 envelope = MessageCacheUtils.loadEnvelope(file);
37 } catch (Exception e) {
38 logger.error("Failed to load cached message envelope “{}”: {}", file, e.getMessage(), e);
39 }
40 }
41 return envelope;
42 }
43
44 public void delete() {
45 try {
46 Files.delete(file.toPath());
47 } catch (IOException e) {
48 logger.warn("Failed to delete cached message file “{}”, ignoring: {}", file, e.getMessage());
49 }
50 // Delete parent directory, if empty
51 try {
52 Files.delete(file.toPath().getParent());
53 } catch (IOException ignored) {
54 }
55 }
56 }