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 Send for RawStdio
impl Sync for RawStdio
impl Unpin for RawStdio
impl !UnwindSafe 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