Все именно так. Создаются исходящие соединение, но по UDP все равно делается hole punch чтобы получать ответы от той стороны.
Можно также соединить два адреса позади NAT если оба знают третий с публичным IP.
Короче это работает давно и успешно у всех.
Транзитные тоннели ничего не знают о данном протоколе: это протокол более высокого уровня и его сообщения передаются в зашифрованном виде внутри I2NP сообщений Tunnel и TunnelGateway.
Ну чтобы расплатиться в волмарте наличными кредитный рейтинг действительно не нужен. А купить сотовый телефон с контрактом уже не получится. Не говоря уже о том, чтобы застраховать машину и снять жилье. Заметьте, ни о каком кредите речь пока даже не идет.
Например возвращать не void, а некоторую сущность, дающую доступ к этому асинхронному процессу. Главное, чтобы была возможность контроля над этим асинхронным процессом. В противном случае любой асинхронный процесс рискует стать зомби.
Так метод тогда должен называться не runOnce а типа invoke...., и соответствующими методами класса для контроля над асинхронными процессами. У вас же претензия в том, что чтение продолжает работать после завершения runOnce.
Ну так надо метод сделать для его закрытия.
Антипаттерн здесь вовсе не в shared_from_this, а использовании асинхронного чтения в runOnce. Тут надо или читать синхронно или дожидаться завершения и уж потом выходить.
И, разумеется, i2pd подобной глупостью заниматься не собирается.
Можно также соединить два адреса позади NAT если оба знают третий с публичным IP.
Короче это работает давно и успешно у всех.
Все таки криптография и криптовалюты это не одно и то же.
Не лучше ли сразу держать указатель на коллбэк в events[i].data.ptr и обойтись без лишнего поиска в хэше?
Антипаттерн здесь вовсе не в shared_from_this, а использовании асинхронного чтения в runOnce. Тут надо или читать синхронно или дожидаться завершения и уж потом выходить.
Или просто закрыть стрим, тогда async_read вызовет коллбэк с ошибкой и все остановится корректно.
Не подскажете, где взять такой список законным способом?
Я просто не стану облегчать им жизнь, распространяя информацию о себе. Основная масса сразу отсеется, ибо иные методы уже слишком затратны.