Size: a a a

2018 July 29

A

Alexander in Rust Async
as_ref() на &dyn Future тоже не находит
источник

D

Denis in Rust Async
ты сделал use trait?
источник

A

Alexander in Rust Async
Ля, семен-семеныч, сорян.
источник

D

Denis in Rust Async
use and_then2::FutureExt или типа того
источник

D

Denis in Rust Async
Привет всем. У меня небольшие сложности в работе с tokio + udp. Пожалуйста помогите :)

1. Нужно ли делать один большой кодек для всего или разбить всё это на sub кодеки? Основная проблема в том, что я в начале сделал пару разных кодеков, которые все хендлят определённые типы пакетов и планировал просто использовать их как wrapper вокруг сокета․ Но UdpFramed кушает мой сокет.

Получается я не могу делать что-то подобное
firstCodecFramed.for_each(|data, addr| {
   let secondCodecFramed = UdpFramed::new(firstCodecFramed.get_ref(), secondCodec);
   ///
}
Где я неправильно думаю? ։)

2.Как правильно отправлять пакеты через UdpSocket?  Я сейчас сделал как-то так.
        let (packet_sender, packet_sender_receiver) = futures::sync::mpsc::channel(10);

       let (sink, stream) = self.framed.split();

       Box::new(
           stream
               .for_each(move |(data, addr)| {
                   Cacher::process_request(packet_sender.clone(), &data.freeze(), addr)
               })
               .map_err(|e| {
                   error!("Stream error inside for_each {}", e);
               })
               .join(packet_sender_receiver.forward(sink.sink_map_err(|e| {
                   error!("Sink error inside receiver {}", e);
               })))
               .map(|_| {}),
       )
То есть у меня есть mpsc channel для отправки данных в сокет в дальнейшем все данные сливаются в него, но хочется так же уметь отправить пакет и отреагировать на его получение с помощью and_then.
Что-то в псевдокоде

socket.send(someData)
       .and_then(socket.receiveData())
источник

A

Alik in Rust Async
Закрепленное сообщение как раз про меня😂
источник

D

Denis in Rust Async
по первому вопросу не очень понятна.. суть вопроса. ты хочешь один и тот же сокет переиспользовать с разными кодеками?
источник

A

Alik in Rust Async
Denis
по первому вопросу не очень понятна.. суть вопроса. ты хочешь один и тот же сокет переиспользовать с разными кодеками?
Да, но пытаясь это сделать начинаю сомневаться, что это правильно
источник

A

Alik in Rust Async
Ещё нарыл такую ссылку https://github.com/tokio-rs/tokio-core/issues/287
источник

D

Denis in Rust Async
ну как сказать, у UdpFramed есть метод into_inner, который возвращает оригинальный сокет
источник

A

Alik in Rust Async
Denis
ну как сказать, у UdpFramed есть метод into_inner, который возвращает оригинальный сокет
Но он берёт self. Вообщем-с гораздо важнее второй вопрос, потому что первый это моё недопонимание
источник

A

Alik in Rust Async
Примеров по UDP не так уж и много
источник

A

Alik in Rust Async
А если в mpsc отправлять Box<Future> ?
источник

D

Denis in Rust Async
по второму примеру всё не совсем просто
источник

D

Denis in Rust Async
ты же не можешь получить "ответ на запрос"
источник

D

Denis in Rust Async
ты просто что-то отсылаешь и что-то получаешь параллельно
источник

D

Denis in Rust Async
поэтому не очень понятно, что значит "отреагировать на его получение"
источник

D

Denis in Rust Async
может тебе тогда tcp нужен? :)
источник

A

Alik in Rust Async
Denis
может тебе тогда tcp нужен? :)
Я бы и сам рад использовать TCP, но не могу, не от меня зависит․
Вообщем, я думаю, что понял свою ошибку насчёт второго вопроса, мне хендлер и не нужен, ведь в Udp пакеты вообще могут не в том порядке придти в каком нужно.

Но насчёт первого вопроса, я всё ещё в запутанном положении․
источник

V

Vladimir in Rust Async
Alik
Примеров по UDP не так уж и много
А где на кодек в удп посмотреть, и на его создание?
источник