From 814ee1339dadd14d606b6c726cffffbe630b2547 Mon Sep 17 00:00:00 2001
From: Taylor Cramer <cramertj@google.com>
Date: Wed, 17 Apr 2019 00:10:37 +0000
Subject: [PATCH] [rust][terminal] terminal to fuchsia-component

Change-Id: Id9c2406b7fb715b5bbb91ab999be687692569e29
---
 garnet/bin/terminal/BUILD.gn               |  2 +-
 garnet/bin/terminal/src/app.rs             |  8 ++++----
 garnet/bin/terminal/src/main.rs            | 14 +++++---------
 garnet/bin/terminal/src/view_controller.rs |  2 +-
 4 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/garnet/bin/terminal/BUILD.gn b/garnet/bin/terminal/BUILD.gn
index 68d76ec7d87..1c5d4bfea51 100644
--- a/garnet/bin/terminal/BUILD.gn
+++ b/garnet/bin/terminal/BUILD.gn
@@ -18,8 +18,8 @@ rustc_binary("bin") {
     "//garnet/bin/terminal/third_party/term-model",
     "//garnet/public/lib/fidl/rust/fidl",
     "//garnet/public/rust/carnelian",
-    "//garnet/public/rust/fuchsia-app",
     "//garnet/public/rust/fuchsia-async",
+    "//garnet/public/rust/fuchsia-component",
     "//garnet/public/rust/fuchsia-scenic",
     "//garnet/public/rust/fuchsia-zircon",
     "//garnet/public/rust/shared-buffer",
diff --git a/garnet/bin/terminal/src/app.rs b/garnet/bin/terminal/src/app.rs
index 88323030c2c..983e51e1c20 100644
--- a/garnet/bin/terminal/src/app.rs
+++ b/garnet/bin/terminal/src/app.rs
@@ -1,12 +1,12 @@
 use crate::view_controller::{FontFacePtr, ViewController, ViewControllerPtr};
 use carnelian::FontFace;
 use failure::Error;
-use fidl::endpoints::{create_endpoints, create_proxy, RequestStream};
+use fidl::endpoints::{create_endpoints, create_proxy};
 use fidl_fuchsia_ui_app::{ViewProviderRequest, ViewProviderRequestStream};
 use fidl_fuchsia_ui_scenic::{ScenicMarker, ScenicProxy};
 use fidl_fuchsia_ui_views::ViewToken;
-use fuchsia_app::client::connect_to_service;
 use fuchsia_async as fasync;
+use fuchsia_component::client::connect_to_service;
 use fuchsia_scenic::Session;
 use futures::{TryFutureExt, TryStreamExt};
 use parking_lot::Mutex;
@@ -33,10 +33,10 @@ impl App {
         })))
     }
 
-    pub fn spawn_view_provider_server(app: &AppPtr, chan: fasync::Channel) {
+    pub fn spawn_view_provider_server(app: &AppPtr, stream: ViewProviderRequestStream) {
         let app = app.clone();
         fasync::spawn(
-            ViewProviderRequestStream::from_channel(chan)
+            stream
                 .try_for_each(move |req| {
                     let ViewProviderRequest::CreateView { token, .. } = req;
                     let view_token = ViewToken { value: token };
diff --git a/garnet/bin/terminal/src/main.rs b/garnet/bin/terminal/src/main.rs
index 9eb1c9f1512..cc8e527286c 100644
--- a/garnet/bin/terminal/src/main.rs
+++ b/garnet/bin/terminal/src/main.rs
@@ -10,9 +10,8 @@ mod view_controller;
 
 use app::App;
 use failure::{Error, ResultExt};
-use fidl::endpoints::ServiceMarker;
-use fidl_fuchsia_ui_app::ViewProviderMarker;
 use fuchsia_async as fasync;
+use futures::StreamExt;
 use std::env;
 
 fn main() -> Result<(), Error> {
@@ -21,13 +20,10 @@ fn main() -> Result<(), Error> {
     let mut executor = fasync::Executor::new().context("Error creating executor")?;
     let app = App::new()?;
 
-    let fut = fuchsia_app::server::ServicesServer::new()
-        .add_service((ViewProviderMarker::NAME, move |chan| {
-            App::spawn_view_provider_server(&app, chan)
-        }))
-        .start()
-        .context("Error starting view provider server")?;
+    let mut fs = fuchsia_component::server::ServiceFs::new_local();
+    fs.dir("public").add_fidl_service(|stream| App::spawn_view_provider_server(&app, stream));
+    fs.take_and_serve_directory_handle()?;
 
-    executor.run_singlethreaded(fut)?;
+    let () = executor.run_singlethreaded(fs.collect());
     Ok(())
 }
diff --git a/garnet/bin/terminal/src/view_controller.rs b/garnet/bin/terminal/src/view_controller.rs
index 4384f3a3d3d..4a927041930 100644
--- a/garnet/bin/terminal/src/view_controller.rs
+++ b/garnet/bin/terminal/src/view_controller.rs
@@ -10,8 +10,8 @@ use fidl_fuchsia_ui_input::{
 };
 use fidl_fuchsia_ui_scenic::{self as scenic, SessionListenerMarker, SessionListenerRequest};
 use fidl_fuchsia_ui_views::ViewToken;
-use fuchsia_app::client::connect_to_service;
 use fuchsia_async as fasync;
+use fuchsia_component::client::connect_to_service;
 use fuchsia_scenic::{EntityNode, HostImageCycler, SessionPtr, View};
 use futures::{FutureExt, TryFutureExt, TryStreamExt};
 use parking_lot::Mutex;
-- 
GitLab