#asynchronous #rust #stream #unix-socket #rust-tokio
#асинхронный #Ржавчина #поток #unix-сокет #rust-tokio
Вопрос:
У меня есть a loop {}
вокруг a futures::select!
. Я бы хотел
- ожидайте новых подключений к сокету Unix.
- ожидание нового сообщения в одном из потоков Unix, созданных в 1. (желательно с каким-либо uuid (отправленным подключающимся клиентом в 1. непосредственно после подключения), прикрепленным к нему)
Я до сих пор не правильно понял концепцию потока, особенно futures-rs «FusedFuture». Я попытался создать нужные мне потоки, используя tokio’s async-stream, но это не сработало, поскольку он не реализует futures-rs’s FusedFuture (что мне требуется, поскольку я проверяю другие потоки в том же select! это преимущество / требует метода FusedFutures is_terminated())
Я думаю, что интересно что-то вроде tokio_stream::StreamMap (ключ как uuid и значение как поток, который содержит тупик с сообщением, полученным на сокете, и ссылкой на UnixStream для обратной записи.
Мне очень жаль, что я не могу привести какие-либо примеры или что-то подобное, чтобы сделать проблему менее неясной. Я много пробовал, но не смог приблизиться к своей цели. Я надеюсь, что способ, которым a написал это, несколько понятен 😟
Вопрос о том, использовать ли std::os::unix::net::UnixListener
или tokio::net::UnixListener
, находится в воздухе. Я пробовал оба, но не смог ничего добиться ни с одним из них.