pub struct RawStdio { /* private fields */ }Implementations§
Source§impl RawStdio
impl RawStdio
Sourcepub fn new(handle: &Handle) -> Result<Self>
pub fn new(handle: &Handle) -> Result<Self>
Examples found in repository?
examples/echo.rs (line 40)
35fn main() {
36 // Create the event loop that will drive this server
37 let mut l = Core::new().unwrap();
38 let handle = l.handle();
39
40 let stdio = async_readline::RawStdio::new(&handle).unwrap();
41 let (stdin, stdout, _) = stdio.split();
42
43 let framed_in = stdin.framed(CharCodec);
44 let framed_out = stdout.framed(CharCodec);
45
46 let done = framed_in
47 .map(move |ch| {
48 format!("got: {}\n", ch)
49 })
50 .forward(framed_out);
51
52 l.run(done).unwrap();
53}More examples
examples/readline.rs (line 20)
13fn main() {
14 // Create the event loop that will drive this server
15 let mut l = Core::new().unwrap();
16 let handle = l.handle();
17
18 let periodic_timer1 = tokio_core::reactor::Interval::new(std::time::Duration::from_millis(2500), &handle).unwrap();
19 let periodic_timer2 = tokio_core::reactor::Interval::new(std::time::Duration::from_millis(500), &handle).unwrap();
20 let stdio = async_readline::RawStdio::new(&handle).unwrap();
21 let (stdin, stdout, _) = stdio.split();
22
23
24 let (commands, rl_writer) = async_readline::init(stdin, stdout);
25
26 let acc1 = Rc::new(RefCell::new(0));
27 let acc2 = acc1.clone();
28 let acc3 = acc1.clone();
29 let connected1 = Rc::new(RefCell::new(false));
30 let connected2 = connected1.clone();
31 let connected3 = connected1.clone();
32
33 let done = commands
34 .map(move |line| {
35 *connected1.borrow_mut() = false;
36 *acc1.borrow_mut() = 0;
37
38 let mut v = vec!();
39 let _ = write!(v, "\n> ");
40 v.append(&mut line.line.clone());
41 v
42 })
43 .select(
44 periodic_timer1
45 .map(|_| {
46 let mut v = vec!();
47 if *connected2.borrow() {
48 *acc2.borrow_mut() += 1;
49 let _ = write!(v, "\nFiles ready: {} ", *acc2.borrow());
50 }
51 v
52 })
53 )
54 .select(
55 periodic_timer2.map(|_| {
56 let mut v = vec!();
57 if !*connected3.borrow() {
58 *acc3.borrow_mut() += 1;
59 if *acc3.borrow() > 3 {
60 let _ = write!(v, "\nConnected!");
61 *acc3.borrow_mut() = 0;
62 *connected3.borrow_mut() = true;
63 } else {
64 let _ = write!(v, "\nConnecting... ");
65 }
66 } else if *acc3.borrow() > 10 {
67 let _ = write!(v, "Disconnecting... ");
68 *acc3.borrow_mut() = 0;
69 *connected3.borrow_mut() = false;
70 } else if *acc3.borrow() > 5 {
71 let _ = write!(v, "Error... ");
72 }
73
74 v
75 })
76 )
77 .forward(rl_writer);
78
79 l.run(done).unwrap();
80}Sourcepub fn split(
self,
) -> (PollEvented<StdioFd>, PollEvented<StdioFd>, PollEvented<StdioFd>)
pub fn split( self, ) -> (PollEvented<StdioFd>, PollEvented<StdioFd>, PollEvented<StdioFd>)
Examples found in repository?
examples/echo.rs (line 41)
35fn main() {
36 // Create the event loop that will drive this server
37 let mut l = Core::new().unwrap();
38 let handle = l.handle();
39
40 let stdio = async_readline::RawStdio::new(&handle).unwrap();
41 let (stdin, stdout, _) = stdio.split();
42
43 let framed_in = stdin.framed(CharCodec);
44 let framed_out = stdout.framed(CharCodec);
45
46 let done = framed_in
47 .map(move |ch| {
48 format!("got: {}\n", ch)
49 })
50 .forward(framed_out);
51
52 l.run(done).unwrap();
53}More examples
examples/readline.rs (line 21)
13fn main() {
14 // Create the event loop that will drive this server
15 let mut l = Core::new().unwrap();
16 let handle = l.handle();
17
18 let periodic_timer1 = tokio_core::reactor::Interval::new(std::time::Duration::from_millis(2500), &handle).unwrap();
19 let periodic_timer2 = tokio_core::reactor::Interval::new(std::time::Duration::from_millis(500), &handle).unwrap();
20 let stdio = async_readline::RawStdio::new(&handle).unwrap();
21 let (stdin, stdout, _) = stdio.split();
22
23
24 let (commands, rl_writer) = async_readline::init(stdin, stdout);
25
26 let acc1 = Rc::new(RefCell::new(0));
27 let acc2 = acc1.clone();
28 let acc3 = acc1.clone();
29 let connected1 = Rc::new(RefCell::new(false));
30 let connected2 = connected1.clone();
31 let connected3 = connected1.clone();
32
33 let done = commands
34 .map(move |line| {
35 *connected1.borrow_mut() = false;
36 *acc1.borrow_mut() = 0;
37
38 let mut v = vec!();
39 let _ = write!(v, "\n> ");
40 v.append(&mut line.line.clone());
41 v
42 })
43 .select(
44 periodic_timer1
45 .map(|_| {
46 let mut v = vec!();
47 if *connected2.borrow() {
48 *acc2.borrow_mut() += 1;
49 let _ = write!(v, "\nFiles ready: {} ", *acc2.borrow());
50 }
51 v
52 })
53 )
54 .select(
55 periodic_timer2.map(|_| {
56 let mut v = vec!();
57 if !*connected3.borrow() {
58 *acc3.borrow_mut() += 1;
59 if *acc3.borrow() > 3 {
60 let _ = write!(v, "\nConnected!");
61 *acc3.borrow_mut() = 0;
62 *connected3.borrow_mut() = true;
63 } else {
64 let _ = write!(v, "\nConnecting... ");
65 }
66 } else if *acc3.borrow() > 10 {
67 let _ = write!(v, "Disconnecting... ");
68 *acc3.borrow_mut() = 0;
69 *connected3.borrow_mut() = false;
70 } else if *acc3.borrow() > 5 {
71 let _ = write!(v, "Error... ");
72 }
73
74 v
75 })
76 )
77 .forward(rl_writer);
78
79 l.run(done).unwrap();
80}Auto Trait Implementations§
impl !Freeze for RawStdio
impl !RefUnwindSafe for RawStdio
impl !UnwindSafe for RawStdio
impl Send for RawStdio
impl Sync for RawStdio
impl Unpin for RawStdio
impl UnsafeUnpin for RawStdio
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more