+ });
+
+ dbusconnection.addSigHandler(Signal.ReceiptReceived.class, receiptReceived -> {
+ if (jsonWriter != null) {
+ var envelope = new JsonMessageEnvelope(receiptReceived);
+ final var object = Map.of("envelope", envelope);
+ try {
+ jsonWriter.write(object);
+ } catch (IOException e) {
+ logger.error("Failed to write json object: {}", e.getMessage());
+ }
+ } else {
+ System.out.print(String.format("Receipt from: %s\nTimestamp: %s\n",
+ receiptReceived.getSender(),
+ DateUtils.formatTimestamp(receiptReceived.getTimestamp())));
+ }
+ });
+
+ dbusconnection.addSigHandler(Signal.SyncMessageReceived.class, syncReceived -> {
+ if (jsonWriter != null) {
+ var envelope = new JsonMessageEnvelope(syncReceived);
+ final var object = Map.of("envelope", envelope);
+ try {
+ jsonWriter.write(object);
+ } catch (IOException e) {
+ logger.error("Failed to write json object: {}", e.getMessage());
+ }
+ } else {
+ System.out.print(String.format("Sync Envelope from: %s to: %s\nTimestamp: %s\nBody: %s\n",
+ syncReceived.getSource(),
+ syncReceived.getDestination(),
+ DateUtils.formatTimestamp(syncReceived.getTimestamp()),
+ syncReceived.getMessage()));
+ if (syncReceived.getGroupId().length > 0) {
+ System.out.println("Group info:");
+ System.out.println(" Id: " + Base64.getEncoder().encodeToString(syncReceived.getGroupId()));
+ }
+ if (syncReceived.getAttachments().size() > 0) {
+ System.out.println("Attachments: ");
+ for (var attachment : syncReceived.getAttachments()) {
+ System.out.println("- Stored plaintext in: " + attachment);
+ }
+ }
+ System.out.println();
+ }
+ });
+ } catch (DBusException e) {
+ e.printStackTrace();
+ return 2;
+ }
+ while (true) {
+ try {
+ Thread.sleep(10000);
+ } catch (InterruptedException e) {
+ return 0;