/** Returns the number of email packets for the email. */ private int getNumPackets() { int numPackets = 0; for (Object property: keySet()) if (property instanceof String) { String delFlagProperty = (String)property; if (delFlagProperty.matches(PROPERTY_DESTINATION + ".*" + DELETED_FROM_DHT)) numPackets++; } return numPackets; }
private int getNumDeliveredPackets() { int numUndelivered = 0; for (Object property: keySet()) if (property instanceof String) { String delFlagProperty = (String)property; if (delFlagProperty.matches(PROPERTY_DESTINATION + ".*" + DELETED_FROM_DHT) && "true".equals(getProperty(delFlagProperty))) numUndelivered++; } return numUndelivered; }
public void setPacketDelivered(Hash dhtKey, boolean delivered) { String dhtKeyStr = dhtKey.toBase64(); for (Object property: keySet()) if (property instanceof String) { String propertyStr = (String)property; if (propertyStr.matches(PROPERTY_DESTINATION + ".*" + DHT_KEY) && dhtKeyStr.equals(getProperty(propertyStr))) { String deletedProperty = propertyStr.replace(DHT_KEY, DELETED_FROM_DHT); setProperty(deletedProperty, delivered ? "true" : "false"); } } }
/** Returns the DHT keys of all email packets which haven't been deleted from the DHT */ public Collection<PacketInfo> getUndeliveredPacketKeys() { Collection<PacketInfo> packets = new ArrayList<PacketInfo>(); for (Object property: keySet()) if (property instanceof String) { String delFlagProperty = (String)property; if (delFlagProperty.matches(PROPERTY_DESTINATION + ".*" + DELETED_FROM_DHT) && "false".equals(getProperty(delFlagProperty))) { String baseProperty = delFlagProperty.replace(DELETED_FROM_DHT, ""); String dhtKeyProperty = baseProperty + DHT_KEY; String dhtKeyStr = getProperty(dhtKeyProperty); String delVerifProperty = baseProperty + DELETE_VERIFICATION_HASH; String delVerifStr = getProperty(delVerifProperty); try { Hash dhtKey = Util.createHash(dhtKeyStr); Hash delVerifHash = Util.createHash(delVerifStr); packets.add(new PacketInfo(dhtKey, delVerifHash)); } catch (DataFormatException e) { log.error("Invalid DHT key or verification hash in email metadata for property key " + baseProperty, e); } } } return packets; }