a567f788bd
## Description This PR updates Lighthouse to tokio 0.3. It includes a number of dependency updates and some structural changes as to how we create and spawn tasks. This also brings with it a number of various improvements: - Discv5 update - Libp2p update - Fix for recompilation issues - Improved UPnP port mapping handling - Futures dependency update - Log downgrade to traces for rejecting peers when we've reached our max Co-authored-by: blacktemplar <blacktemplar@a1.net>
24 lines
756 B
Rust
24 lines
756 B
Rust
use serde::Serialize;
|
|
|
|
/// A convenience wrapper around `blocking_task`.
|
|
pub async fn blocking_task<F, T>(func: F) -> Result<T, warp::Rejection>
|
|
where
|
|
F: FnOnce() -> Result<T, warp::Rejection> + Send + 'static,
|
|
T: Send + 'static,
|
|
{
|
|
tokio::task::spawn_blocking(func)
|
|
.await
|
|
.unwrap_or_else(|_| Err(warp::reject::reject())) // This should really be a 500
|
|
}
|
|
|
|
/// A convenience wrapper around `blocking_task` for use with `warp` JSON responses.
|
|
pub async fn blocking_json_task<F, T>(func: F) -> Result<warp::reply::Json, warp::Rejection>
|
|
where
|
|
F: FnOnce() -> Result<T, warp::Rejection> + Send + 'static,
|
|
T: Serialize + Send + 'static,
|
|
{
|
|
blocking_task(func)
|
|
.await
|
|
.map(|resp| warp::reply::json(&resp))
|
|
}
|