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;
|
||||
|
||||
pub mod file;
|
||||
mod metadata;
|
||||
mod stdin;
|
||||
mod stdout;
|
||||
mod stderr;
|
||||
|
||||
pub use file::File;
|
||||
pub use file::OpenOptions;
|
||||
pub use metadata::{metadata, MetadataFuture};
|
||||
pub use stdin::{stdin, Stdin};
|
||||
pub use stdout::{stdout, Stdout};
|
||||
pub use stderr::{stderr, Stderr};
|
||||
|
||||
use futures::{Future, Poll};
|
||||
use futures::Poll;
|
||||
use futures::Async::*;
|
||||
|
||||
use std::fs::{self, Metadata};
|
||||
use std::io;
|
||||
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>
|
||||
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