Size: a a a

2018 August 16

м

мухожук in Rust Async
(на самом деле задача объединить работу двух независимых стримов;

можно конеш сделать через tokio::mpsc, но не хотелось бы экспозить этот API)
источник

ph

pl 🦑 hk in Rust Async
чо значит объединить?
источник

м

мухожук in Rust Async
чтобы внутри Service работало два стрима (в частности, два TcpListener)
источник

Ct

Casual tears in Rust Async
все еще непонятно что тебе хочется, но скорее всего тебе нужен select https://docs.rs/futures/0.2.1/futures/stream/trait.StreamExt.html#method.select
источник

м

мухожук in Rust Async
да, выглядит надо
я почему-то нашёл future::select, но пропустил существование stream::select()
источник

м

мухожук in Rust Async
> все еще непонятно что тебе хочется,

хочется в рамках одного сервиса иметь 2 лисенера на разных адресах
источник

м

мухожук in Rust Async
(2 или больше)
источник

ph

pl 🦑 hk in Rust Async
да, тогда селект
источник

ph

pl 🦑 hk in Rust Async
я даже так где-то делал
источник

м

мухожук in Rust Async
а если N лисенеров?
источник

м

мухожук in Rust Async
писать SelectN?)
источник

ph

pl 🦑 hk in Rust Async
        let http = listener.incoming().map(|(s, sa)| Connection::Http(s, sa));
   let http2 = listener2.incoming().map(|(s, sa)| Connection::Http2(s, sa));

   info!("Ready to go");
   let server = http.select(http2).for_each(|conn| {
       match conn {
           Connection::Http(sock, addr) => {
               let s = s.clone();
               Http::new().bind_connection(&handle2, sock, addr, s);
           },
           Connection::Http2(sock, _addr) => {
               let http2_sc = httpbis::server_conf::ServerConf::new();
               let (_conn, future) = httpbis::server_conn::ServerConnection::new_plain_single_thread(&handle3, sock, http2_sc, grpc.clone());
               handle3.spawn(future.map_err(|e| error!("Error servicing http2 {}", e)));
           },
       }

       Ok(())
   });
   core.run(server).unwrap();
источник

м

мухожук in Rust Async
спасибо
источник

м

мухожук in Rust Async
мухожук
а если N лисенеров?
а, conn1.select(conn2).select(conn3) лол

ладно, я слышал там вроде есть какой-то макрос, погуглю ещё (или свой напишу)
источник

ph

pl 🦑 hk in Rust Async
Есть для фьюч
источник

ph

pl 🦑 hk in Rust Async
Для стримов не помню
источник

м

мухожук in Rust Async
в 0.2 есть stream::select_all(): https://docs.rs/futures/0.2.1/futures/stream/fn.select_all.html

но я на 0.1
источник

ph

pl 🦑 hk in Rust Async
На 0.3 переходи
источник

ph

pl 🦑 hk in Rust Async
Че ты какой
источник

ph

pl 🦑 hk in Rust Async
Не блидинг едж
источник