#![allow(unused_variables)]
extern crate futures;
extern crate tokio_core;
extern crate xrl;
use futures::{future, Future, Stream};
use tokio_core::reactor::Core;
use xrl::{spawn, Client, Frontend, FrontendBuilder, ScrollTo, ServerResult, Style, Update};
struct MyFrontend {
#[allow(dead_code)]
client: Client,
}
impl Frontend for MyFrontend {
fn update(&mut self, update: Update) -> ServerResult<()> {
println!("received `update` from Xi core:\n{:?}", update);
Box::new(future::ok(()))
}
fn scroll_to(&mut self, scroll_to: ScrollTo) -> ServerResult<()> {
println!("received `scroll_to` from Xi core:\n{:?}", scroll_to);
Box::new(future::ok(()))
}
fn set_style(&mut self, style: Style) -> ServerResult<()> {
println!("received `set_style` from Xi core:\n{:?}", style);
Box::new(future::ok(()))
}
}
struct MyFrontendBuilder;
impl FrontendBuilder<MyFrontend> for MyFrontendBuilder {
fn build(self, client: Client) -> MyFrontend {
MyFrontend { client: client }
}
}
fn main() {
let mut core = Core::new().unwrap();
let handle = core.handle();
let (mut client, core_stderr) = spawn("xi-core", MyFrontendBuilder {}, &handle);
let log_core_errors = core_stderr
.for_each(|msg| {
println!("xi-core stderr: {}", msg);
Ok(())
})
.map_err(|_| ());
core.handle().spawn(log_core_errors);
let open_new_view = client
.new_view(None)
.map(|view_name| println!("opened new view: {}", view_name));
core.run(open_new_view).unwrap();
}