Как ожидать подключения к сокету и преобразовывать их в FusedStream в Rust

#asynchronous #rust #stream #unix-socket #rust-tokio

#асинхронный #Ржавчина #поток #unix-сокет #rust-tokio

Вопрос:

У меня есть a loop {} вокруг a futures::select! . Я бы хотел

  1. ожидайте новых подключений к сокету Unix.
  2. ожидание нового сообщения в одном из потоков 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 , находится в воздухе. Я пробовал оба, но не смог ничего добиться ни с одним из них.