/** * Creates {@link Packet} of type {@link PacketTypes#DATA} and sends it to network, initiates retransmission. * It is normal data sending procedure when {@link Session} with remote node is already established. * @param session {@link Session} with remote node * @param payload data to send */ private void sendPayload(Session session, byte[] payload) { byte[] dataToSend = preparePayloadForSession(session.sessionKey, payload); Packet packet = new Packet(getNextPacketId(), myNodeInfo.getNumber(), session.remoteNodeInfo.getNumber(), PacketTypes.DATA, dataToSend); sendPacket(session.remoteNodeInfo, packet); session.addPacketToRetransmitMap(packet.packetId, packet, payload); }