Create TileResult type alias to clean up signatures
This commit is contained in:
parent
9ae994f637
commit
7d0c44bf5f
|
@ -13,6 +13,7 @@ use structopt::StructOpt;
|
|||
use tokio::fs::File;
|
||||
use tokio::prelude::*;
|
||||
use tokio::time::{self, Duration};
|
||||
use crate::tiles::TileResult;
|
||||
|
||||
#[derive(Deserialize, Clone, Debug, Default)]
|
||||
#[serde(default)]
|
||||
|
@ -116,7 +117,7 @@ pub async fn read_config() -> Result<Config, Box<dyn std::error::Error>> {
|
|||
pub fn process_tile(
|
||||
tile: &TileConfig,
|
||||
connection: &Arc<SyncConnection>,
|
||||
) -> BoxStream<'static, Result<Block, Box<dyn std::error::Error + Send + Sync>>> {
|
||||
) -> BoxStream<'static, TileResult> {
|
||||
let five_secs = Duration::from_secs(5);
|
||||
match &tile.config_type {
|
||||
TileConfigType::Battery => wrap(tiles::battery_stream(), tile.update.or(Some(five_secs))),
|
||||
|
@ -130,9 +131,9 @@ pub fn process_tile(
|
|||
fn wrap<'a, S>(
|
||||
stream: S,
|
||||
duration: Option<Duration>,
|
||||
) -> BoxStream<'a, Result<Block, Box<dyn Error + Send + Sync>>>
|
||||
) -> BoxStream<'a, TileResult>
|
||||
where
|
||||
S: Stream<Item = Result<Block, Box<dyn Error + Send + Sync>>> + Send + 'a,
|
||||
S: Stream<Item = TileResult> + Send + 'a,
|
||||
{
|
||||
match duration {
|
||||
Some(duration) => Box::pin(time::throttle(duration, stream)),
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
use super::TileResult;
|
||||
use crate::tile::Block;
|
||||
use futures::{future::try_join3, stream, Stream};
|
||||
use futures_util::StreamExt;
|
||||
|
@ -5,7 +6,7 @@ use std::error::Error;
|
|||
use tokio::fs::File;
|
||||
use tokio::prelude::*;
|
||||
|
||||
pub fn battery_stream() -> impl Stream<Item = Result<Block, Box<dyn Error + Send + Sync>>> {
|
||||
pub fn battery_stream() -> impl Stream<Item = TileResult> {
|
||||
stream::repeat(()).then(|()| async {
|
||||
let charge_now = async {
|
||||
let mut raw = String::new();
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
use crate::tile::Block;
|
||||
use crate::tiles::TileResult;
|
||||
use dbus::nonblock::stdintf::org_freedesktop_dbus::Properties;
|
||||
use dbus::nonblock::{Proxy, SyncConnection};
|
||||
use futures::{FutureExt, Stream};
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
|
||||
pub fn hostname_stream(
|
||||
connection: Arc<SyncConnection>,
|
||||
) -> impl Stream<Item = Result<Block, Box<dyn std::error::Error + Send + Sync>>> {
|
||||
pub fn hostname_stream(connection: Arc<SyncConnection>) -> impl Stream<Item = TileResult> {
|
||||
let proxy = Proxy::new(
|
||||
"org.freedesktop.hostname1",
|
||||
"/org/freedesktop/hostname1",
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
use super::TileResult;
|
||||
use crate::tile::Block;
|
||||
use futures::stream::StreamExt;
|
||||
use tokio::fs::File;
|
||||
use tokio::prelude::*;
|
||||
use tokio::stream::Stream;
|
||||
|
||||
pub fn load_stream() -> impl Stream<Item = Result<Block, Box<dyn std::error::Error + Send + Sync>>>
|
||||
{
|
||||
pub fn load_stream() -> impl Stream<Item = TileResult> {
|
||||
futures::stream::repeat(()).then(|()| async {
|
||||
let mut raw = String::new();
|
||||
File::open("/proc/loadavg")
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
use super::TileResult;
|
||||
use crate::tile::Block;
|
||||
use futures::{stream, Stream, StreamExt};
|
||||
use std::{io, str, u64};
|
||||
|
@ -40,8 +41,7 @@ fn extract_value(line: &str) -> Result<u64, Box<dyn std::error::Error + Send + S
|
|||
.parse()?)
|
||||
}
|
||||
|
||||
pub fn memory_stream() -> impl Stream<Item = Result<Block, Box<dyn std::error::Error + Send + Sync>>>
|
||||
{
|
||||
pub fn memory_stream() -> impl Stream<Item = TileResult> {
|
||||
stream::repeat(()).then(|_| async {
|
||||
let mut raw = [0u8; 256];
|
||||
File::open("/proc/meminfo")
|
||||
|
|
|
@ -8,3 +8,8 @@ pub use hostname::hostname_stream;
|
|||
pub use load::load_stream;
|
||||
pub use memory::memory_stream;
|
||||
pub use time::time_stream;
|
||||
|
||||
use crate::tile::Block;
|
||||
use std::error::Error;
|
||||
|
||||
pub type TileResult = Result<Block, Box<dyn Error + Send + Sync>>;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
use super::TileResult;
|
||||
use crate::config::TimeConfig;
|
||||
use crate::tile::Block;
|
||||
use chrono::prelude::*;
|
||||
|
@ -6,14 +7,11 @@ use futures::future::Future;
|
|||
use futures::stream::Stream;
|
||||
use futures_util::ready;
|
||||
use pin_project::pin_project;
|
||||
use std::error::Error;
|
||||
use std::pin::Pin;
|
||||
use std::task::{Context, Poll};
|
||||
use tokio::time::{delay_for, delay_until, Delay, Instant};
|
||||
|
||||
pub fn time_stream(
|
||||
config: TimeConfig,
|
||||
) -> impl Stream<Item = Result<Block, Box<dyn std::error::Error + Send + Sync>>> {
|
||||
pub fn time_stream(config: TimeConfig) -> impl Stream<Item = TileResult> {
|
||||
TimeStream {
|
||||
config,
|
||||
delay: delay_until(Instant::now()),
|
||||
|
@ -46,7 +44,7 @@ impl TimeStream {
|
|||
}
|
||||
|
||||
impl Stream for TimeStream {
|
||||
type Item = Result<Block, Box<dyn Error + Send + Sync>>;
|
||||
type Item = TileResult;
|
||||
fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
|
||||
let project = Pin::as_mut(&mut self).project();
|
||||
ready!(Future::poll(project.delay, cx));
|
||||
|
|
Loading…
Reference in a new issue