@Override public IndexPacket next() { if (currentPacketIterator==null || !currentPacketIterator.hasNext()) { currentPacket = bigPackets.next(); currentPacketIterator = currentPacket.iterator(); } IndexPacketEntry entry = currentPacketIterator.next(); IndexPacket indexPacket = new IndexPacket(currentPacket.getDhtKey()); indexPacket.put(entry); return indexPacket; }
IndexPacket indexPacket = new IndexPacket(currentPacket.getDhtKey()); indexPacket.put(entry); return indexPacket;
@Override public Collection<? extends DataPacket> split() { if (isTooBig()) { int bytesPerEntry = entries.get(0).emailPacketKey.toByteArray().length + entries.get(0).delVerificationHash.toByteArray().length + 4; // see toByteArray() List<IndexPacket> subpackets = new ArrayList<IndexPacket>(); IndexPacket currentSubpacket = new IndexPacket(destinationHash); for (IndexPacketEntry entry: entries) { if (currentSubpacket.getSize()+bytesPerEntry > MAX_DATAGRAM_SIZE) { subpackets.add(currentSubpacket); currentSubpacket = new IndexPacket(destinationHash); } currentSubpacket.put(entry); } subpackets.add(currentSubpacket); return subpackets; } else return Collections.singleton(this); } }
IndexPacket mergedPacket = new IndexPacket(indexPackets); log.debug("Found " + mergedPacket.getNumEntries() + " Email Packet keys in " + indexPacketResults.getNumResults() + " Index Packets.");
indexPacketToStore = new IndexPacket(indexPacketToStore, (IndexPacket)existingPacket); else if (existingPacket != null) log.error("Packet of type " + existingPacket.getClass().getSimpleName() + " found in IndexPacketFolder.");
@Test public void testToByteArrayAndBack() throws GeneralSecurityException { IndexPacket newPacket1 = new IndexPacket(indexPacket1.toByteArray()); assertTrue("The two packets differ!", equal(indexPacket1, newPacket1)); IndexPacket newPacket2 = new IndexPacket(indexPacket2.toByteArray()); assertTrue("The two packets differ!", equal(indexPacket2, newPacket2)); }
@Test public void testIndividualPackets() { IndexPacket indexPacket1 = new IndexPacket(destination1); indexPacket1.put(emailPacket1); IndexPacket indexPacket2 = new IndexPacket(destination2); IndexPacket indexPacket3 = new IndexPacket(destination3); indexPacket2.put(emailPacket1); indexPacket2.put(emailPacket2); folder.store(indexPacket1); folder.store(indexPacket2); folder.store(indexPacket3); Iterator<IndexPacket> iterator = folder.individualPackets(); int numIndivEntries = 0; while (iterator.hasNext()) { iterator.next(); numIndivEntries++; } assertEquals(3, numIndivEntries); }
IndexPacket indexPacket = new IndexPacket(destination);
@Before public void setUp() throws Exception { identity = new EmailIdentity("5LqFf~U3aLbJfbfTVtp7kXLPFoeIFo4l8WTg1Wi52bWoxAYaevVVBtR9AvKqy1YmZHbnOIcu59~2X6wMmi6SveljmvAeTc5YEHvfIRrJhnxqjaC4IczYKXfUdrXfaeVEKMQ~PKuvhINh~EhlJUQne0NZQ~S6QAGfUAu83mMoBTVaz0eoUnAzySxbSf~NpxUoK-H6iULsFekmYfaz-yq8cxPFy62LyylTRMGFFwb9is7E~mFnV6Fa0iGSDJvpFfYV29efVUjxiW9JT5T0HwgdaDB4ssSNr0-hthigJmB7zLXOJ8F1gxi3qCfTX9SiGMrZ9KZsOLc7Qs7Iix3ECqesfGTIs9n5G1qnfZriyc1FZdylCMQcnq5QvTITV-Cil0XrU1csV5CEFYEUGfGdLP1xP2SCZr8KJwOI0xfUnkkVnNPc2y~ZGhqxpHeIcnZCpScW-p81vFvTe5fwvEVWixgk6MlFKYyQku28brQ19Tz5tsIH3tUvl4cqGzLVQUbi3cODAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmogzaNWx7p~GTVQxl1JzqcOTyRfELoxqEGS5BowqPe4FNa3Bo-diEcU3k90Cx5MX"); // Make an IndexPacket with 3 entries emailPacket1 = makeEmailPacket("abc"); emailPacket2 = makeEmailPacket("abcd"); emailPacket3 = makeEmailPacket("abcde"); indexPacket1 = new IndexPacket(identity); indexPacket1.put(emailPacket1); indexPacket1.put(emailPacket2); indexPacket1.put(emailPacket3); // Make an IndexPacket with 2 entries emailPacket4 = makeEmailPacket("abcdef"); emailPacket5 = makeEmailPacket("abcdefg"); indexPacket2 = new IndexPacket(identity); indexPacket2.put(emailPacket4); indexPacket2.put(emailPacket5); }
IndexPacket indexPacket = new IndexPacket(destination1); indexPacket.put(emailPacket1); long expirationTime1 = cutoffTime - 3*1000;
@Test public void testMergePackets() { for (int i=0; i<8; i+=2) { IndexPacket mergedPacket = new IndexPacket(indexPacket1, indexPacket2); // Verify that the merged packet and the two original packets all have the same email destination key assertEquals(mergedPacket.getDhtKey(), indexPacket1.getDhtKey()); assertEquals(mergedPacket.getDhtKey(), indexPacket2.getDhtKey()); // Verify that the merged packet contains the email packet keys from the original two packets assertEquals(5, mergedPacket.getNumEntries()); for (IndexPacketEntry entry: indexPacket1) assertTrue("Merged packet does not contain key: " + entry.emailPacketKey, mergedPacket.contains(entry.emailPacketKey)); for (IndexPacketEntry entry: indexPacket2) assertTrue("Merged packet does not contain key: " + entry.emailPacketKey, mergedPacket.contains(entry.emailPacketKey)); } }
IndexPacket indexPacket = new IndexPacket(destination1); indexPacket.put(emailPacket1); indexPacket.put(emailPacket3);
Collection<UnencryptedEmailPacket> emailPackets = email.createEmailPackets(senderIdentity, identities, recipient, maxPacketSize); IndexPacket indexPacket = new IndexPacket(recipientDest); EmailMetadata metadata = email.getMetadata(); for (UnencryptedEmailPacket unencryptedPacket: emailPackets) {