Поиск асинхронной C++ SSH библиотеки
От: Denis Malyshkin Россия  
Дата: 27.03.12 10:49
Оценка:
В своем кросс-платформенном (Win/Mac/Linux) C++ для создания SSH туннелей мы используем библиотеку libssh2. Она используется в асинхронном режиме (т.е. вся обработка нескольких SSH туннелей происходит в одном потоке при помощи callback-ов).

Все работает замечательно, за исключением одного нюанса. Данная библиотека не позволяет одновременно создавать несколько туннелей. Т.е. использовать несколько туннелей можно одновременно, но вот операция создания -- допустима только одна в каждый момент времени (http://www.libssh2.org/mail/libssh2-devel-archive-2012-02/0002.shtml).
Таким образом, на приходится сериализовать операцию создания туннеля. Сделано это при помощи очереди. К сожалению, очередь существенно снижает быстродействие. Перепробовали несколько типов очередей, но эффекта это не дало.

Таки образом, нам видятся несколько вариантов решения проблемы:
1. Доработать libssh2 библиотеку и реализовать в ней параллельное создание туннелей.
2. Найти другую библиотеку.

Первый способ кажется излишне трудоемким...
Но и второй способ не очень прост. Поиск в интернете дал следующие результаты:
1. libSSH Работает только в синхронном режиме.
2. FlowSSH Только под Win.
3. OpenSSH Set of utilities. Это вообще набор утилит. Библиотека или API документация не обнаружены. Такое ощущение, что библиотеки тут нет совсем -- http://www.gossamer-threads.com/lists/openssh/dev/37008
4. Chilkat SSH / SFTP C/C++ Library Работает только в синхронном режиме.
5. NetSieben Secure Shell C++ Library Тоже работает только в синхронном режиме.

Существует ли готовая SSH C++ библиотека, которая поддерживает асинхронный режим и позволяет одновременно создавать несколько SSH туннелей?

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.