@Override public byte[] toByteArray() { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { writeHeader(outputStream); // TODO doesn't the type code already get written in writeHeader? outputStream.write(getPacketTypeCode(dataType)); outputStream.write(key.toByteArray()); } catch (IOException e) { log.error("Can't write to ByteArrayOutputStream.", e); } return outputStream.toByteArray(); }
DhtStorageHandler storageHandler = storageHandlers.get(retrieveRequest.getDataType()); if (storageHandler != null) { DhtStorablePacket storedPacket = storageHandler.retrieve(retrieveRequest.getKey()); Collection<ResponsePacket> response = ResponsePacket.create(storedPacket, StatusCode.OK, retrieveRequest.getPacketId()); if (storedPacket != null) log.debug("Packet found for retrieve request: [" + retrieveRequest + "], replying to sender: [" + Util.toBase32(sender) + "]");
for (Destination node: closeNodes) if (!localDestination.equals(node)) // local has already been taken care of batch.putPacket(new RetrieveRequest(key, dataType), node); sendQueue.send(batch); batch.awaitSendCompletion();