another way to read files using tokio_codec
This commit is contained in:
		@ -19,6 +19,7 @@ serde_derive = "1.0.80"
 | 
			
		||||
url = "1.7.1"
 | 
			
		||||
futures = "0.1.25"
 | 
			
		||||
tokio = "0.1.11"
 | 
			
		||||
tokio-codec = "0.1.1"
 | 
			
		||||
http = "0.1.13"
 | 
			
		||||
hyper = "0.12.14"
 | 
			
		||||
lazy_static = "1.1.0"
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								src/api3.rs
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								src/api3.rs
									
									
									
									
									
								
							@ -8,6 +8,10 @@ use serde_json::{json, Value};
 | 
			
		||||
 | 
			
		||||
use futures::future::*;
 | 
			
		||||
use tokio::prelude::*;
 | 
			
		||||
use tokio::fs::File;
 | 
			
		||||
use tokio::io;
 | 
			
		||||
use tokio_codec;
 | 
			
		||||
 | 
			
		||||
use hyper::{Method, Body, Request, Response, Server, StatusCode};
 | 
			
		||||
 | 
			
		||||
fn test_sync_api_handler(param: Value, info: &ApiMethod) -> Result<Value, Error> {
 | 
			
		||||
@ -37,6 +41,30 @@ fn test_async_api_handler(
 | 
			
		||||
    let task = lazy(|| {
 | 
			
		||||
        println!("A LAZY TASK");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        let dump_file = File::open("/etc/network/interfaces")
 | 
			
		||||
            .and_then(|file| {
 | 
			
		||||
                let file = std::io::BufReader::new(file);
 | 
			
		||||
                let mut linenr = 1;
 | 
			
		||||
                tokio::io::lines(file).for_each(move |line| {
 | 
			
		||||
                    println!("LINE {}: {}", linenr, line);
 | 
			
		||||
                    linenr += 1;
 | 
			
		||||
                    ok(())
 | 
			
		||||
                })
 | 
			
		||||
            }).map_err(|err| ());
 | 
			
		||||
 | 
			
		||||
        //tokio::spawn(dump_file);
 | 
			
		||||
 | 
			
		||||
        let dump_file2 = File::open("/etc/network/interfaces")
 | 
			
		||||
            .and_then(|file| {
 | 
			
		||||
                tokio_codec::FramedRead::new(file, tokio_codec::BytesCodec::new()).for_each(|data| {
 | 
			
		||||
                    println!("DATA {:?}", data);
 | 
			
		||||
                    ok(())
 | 
			
		||||
                })
 | 
			
		||||
            }).map_err(|err| ()); // fixme: log error
 | 
			
		||||
 | 
			
		||||
        tokio::spawn(dump_file2);
 | 
			
		||||
 | 
			
		||||
        let mut resp = Response::new(Body::from("A LAZY TASKs RESPONSE"));
 | 
			
		||||
        *resp.status_mut() = StatusCode::OK;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user