]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/cli/Manager.java
Exit on timeout when receiving
[signal-cli] / src / main / java / cli / Manager.java
index cd5f6305aa6721ee4dcf10fdc0edaff2eaeba9d1..acaa1a0c76492560c7866f568f0abb56c59458b3 100644 (file)
@@ -1,16 +1,16 @@
 /**
  * Copyright (C) 2015 AsamK
 /**
  * Copyright (C) 2015 AsamK
- * <p>
+ *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
- * <p>
+ *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * <p>
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
@@ -179,11 +179,15 @@ public class Manager {
         }
     }
 
         }
     }
 
+    public void handleEndSession(String source) {
+        axolotlStore.deleteAllSessions(source);
+    }
+
     public interface ReceiveMessageHandler {
         void handleMessage(TextSecureEnvelope envelope);
     }
 
     public interface ReceiveMessageHandler {
         void handleMessage(TextSecureEnvelope envelope);
     }
 
-    public void receiveMessages(ReceiveMessageHandler handler) throws IOException {
+    public void receiveMessages(int timeoutSeconds, boolean returnOnTimeout, ReceiveMessageHandler handler) throws IOException {
         TextSecureMessageReceiver messageReceiver = new TextSecureMessageReceiver(URL, TRUST_STORE, username, password, signalingKey);
         TextSecureMessagePipe messagePipe = null;
 
         TextSecureMessageReceiver messageReceiver = new TextSecureMessageReceiver(URL, TRUST_STORE, username, password, signalingKey);
         TextSecureMessagePipe messagePipe = null;
 
@@ -193,9 +197,11 @@ public class Manager {
             while (true) {
                 TextSecureEnvelope envelope;
                 try {
             while (true) {
                 TextSecureEnvelope envelope;
                 try {
-                    envelope = messagePipe.read(1, TimeUnit.MINUTES);
+                    envelope = messagePipe.read(timeoutSeconds, TimeUnit.SECONDS);
                     handler.handleMessage(envelope);
                 } catch (TimeoutException e) {
                     handler.handleMessage(envelope);
                 } catch (TimeoutException e) {
+                    if (returnOnTimeout)
+                        return;
                 } catch (InvalidVersionException e) {
                     System.out.println("Ignoring error: " + e.getMessage());
                 }
                 } catch (InvalidVersionException e) {
                     System.out.println("Ignoring error: " + e.getMessage());
                 }
@@ -206,4 +212,14 @@ public class Manager {
                 messagePipe.shutdown();
         }
     }
                 messagePipe.shutdown();
         }
     }
+
+    public String canonicalizeNumber(String number) throws InvalidNumberException {
+        String localNumber = username;
+        return PhoneNumberFormatter.formatNumber(number, localNumber);
+    }
+
+    protected TextSecureAddress getPushAddress(String number) throws InvalidNumberException {
+        String e164number = canonicalizeNumber(number);
+        return new TextSecureAddress(e164number);
+    }
 }
 }