import org.whispersystems.libaxolotl.state.SessionStore;
import java.io.IOException;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
public class JsonSessionStore implements SessionStore {
@Override
public synchronized void deleteAllSessions(String name) {
- for (AxolotlAddress key : sessions.keySet()) {
+ for (AxolotlAddress key : new ArrayList<>(sessions.keySet())) {
if (key.getName().equals(name)) {
sessions.remove(key);
}
} else {
if (content.getDataMessage().isPresent()) {
TextSecureDataMessage message = content.getDataMessage().get();
-
System.out.println("Body: " + message.getBody().get());
- if (message.getAttachments().isPresent()) {
+
+ if (message.isEndSession()) {
+ m.handleEndSession(envelope.getSource());
+ } else if (message.getAttachments().isPresent()) {
System.out.println("Attachments: ");
for (TextSecureAttachment attachment : message.getAttachments().get()) {
System.out.println("- " + attachment.getContentType() + " (" + (attachment.isPointer() ? "Pointer" : "") + (attachment.isStream() ? "Stream" : "") + ")");
}
}
+ public void handleEndSession(String source) {
+ axolotlStore.deleteAllSessions(source);
+ }
+
public interface ReceiveMessageHandler {
void handleMessage(TextSecureEnvelope envelope);
}