listen_and_notify(pool: Pool<Postgres>, clients: ImeiHashMap) -> Result<()> {
loop {
tokio::time::sleep(Duration::from_secs(1)).await;
let commands = sqlx::query_file_as!(CommandRecord, "sql/select_command.sql").fetch(&pool);
commands
.map(|record| -> Result<()> {
let record = record?;
let imei = record.imei.parse::<i32>()?;
let id = record.id;
let command: protos::command::Command = record.try_into()?;
let command = protobuf::Message::write_to_bytes(&command)?;
let clients = match clients.lock() {
Ok(clients) => clients,
Err(err) => err.into_inner(),
};
if let Some(client) = clients.get(&imei) {
client.unbounded_send(Message::Binary(command))?;
};
Ok(())
})
.map_err(|err| println!("{:?}", err))
.for_each(|_| future::ready(()))
.await;
}
}
Плюс неясно почему функция с вечным циклом резалт возвращает
Рудименты, уберу, спасибо
Обсуждают сегодня