mirror of
https://github.com/tokio-rs/tokio.git
synced 2025-10-01 12:20:39 +00:00
Move metadata to a submodule (#439)
This commit is contained in:
parent
04a4bfd455
commit
5753553ba3
@ -21,43 +21,23 @@ extern crate tokio_io;
|
|||||||
extern crate tokio_threadpool;
|
extern crate tokio_threadpool;
|
||||||
|
|
||||||
pub mod file;
|
pub mod file;
|
||||||
|
mod metadata;
|
||||||
mod stdin;
|
mod stdin;
|
||||||
mod stdout;
|
mod stdout;
|
||||||
mod stderr;
|
mod stderr;
|
||||||
|
|
||||||
pub use file::File;
|
pub use file::File;
|
||||||
pub use file::OpenOptions;
|
pub use file::OpenOptions;
|
||||||
|
pub use metadata::{metadata, MetadataFuture};
|
||||||
pub use stdin::{stdin, Stdin};
|
pub use stdin::{stdin, Stdin};
|
||||||
pub use stdout::{stdout, Stdout};
|
pub use stdout::{stdout, Stdout};
|
||||||
pub use stderr::{stderr, Stderr};
|
pub use stderr::{stderr, Stderr};
|
||||||
|
|
||||||
use futures::{Future, Poll};
|
use futures::Poll;
|
||||||
use futures::Async::*;
|
use futures::Async::*;
|
||||||
|
|
||||||
use std::fs::{self, Metadata};
|
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::ErrorKind::{Other, WouldBlock};
|
use std::io::ErrorKind::{Other, WouldBlock};
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
/// Queries the file system metadata for a path
|
|
||||||
pub fn metadata(path: PathBuf) -> MetadataFuture {
|
|
||||||
MetadataFuture { path }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Future returned by `metadata`
|
|
||||||
#[derive(Debug)]
|
|
||||||
pub struct MetadataFuture {
|
|
||||||
path: PathBuf,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl Future for MetadataFuture {
|
|
||||||
type Item = Metadata;
|
|
||||||
type Error = io::Error;
|
|
||||||
|
|
||||||
fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
|
|
||||||
blocking_io(|| fs::metadata(&self.path))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn blocking_io<F, T>(f: F) -> Poll<T, io::Error>
|
fn blocking_io<F, T>(f: F) -> Poll<T, io::Error>
|
||||||
where F: FnOnce() -> io::Result<T>,
|
where F: FnOnce() -> io::Result<T>,
|
||||||
|
45
tokio-fs/src/metadata.rs
Normal file
45
tokio-fs/src/metadata.rs
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
use super::blocking_io;
|
||||||
|
|
||||||
|
use futures::{Future, Poll};
|
||||||
|
|
||||||
|
use std::fs::{self, Metadata};
|
||||||
|
use std::io;
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
/// Queries the file system metadata for a path
|
||||||
|
pub fn metadata<P>(path: P) -> MetadataFuture<P>
|
||||||
|
where
|
||||||
|
P: AsRef<Path> + Send + 'static,
|
||||||
|
{
|
||||||
|
MetadataFuture::new(path)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Future returned by `metadata`
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct MetadataFuture<P>
|
||||||
|
where
|
||||||
|
P: AsRef<Path> + Send + 'static,
|
||||||
|
{
|
||||||
|
path: P,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<P> MetadataFuture<P>
|
||||||
|
where
|
||||||
|
P: AsRef<Path> + Send + 'static,
|
||||||
|
{
|
||||||
|
pub(crate) fn new(path: P) -> Self {
|
||||||
|
Self { path }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<P> Future for MetadataFuture<P>
|
||||||
|
where
|
||||||
|
P: AsRef<Path> + Send + 'static,
|
||||||
|
{
|
||||||
|
type Item = Metadata;
|
||||||
|
type Error = io::Error;
|
||||||
|
|
||||||
|
fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
|
||||||
|
blocking_io(|| fs::metadata(&self.path))
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user