Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(323)

Side by Side Diff: examples/echo_terminal/main.cc

Issue 2005103003: Add implementations of mojo::{Run,Terminate}[Main]Application() for "chromium". (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <utility> 5 #include <utility>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "mojo/application/application_runner_chromium.h"
12 #include "mojo/common/binding_set.h" 11 #include "mojo/common/binding_set.h"
13 #include "mojo/public/c/system/main.h" 12 #include "mojo/public/c/system/main.h"
14 #include "mojo/public/cpp/application/application_delegate.h" 13 #include "mojo/public/cpp/application/application_impl_base.h"
14 #include "mojo/public/cpp/application/run_application.h"
15 #include "mojo/public/cpp/application/service_provider_impl.h" 15 #include "mojo/public/cpp/application/service_provider_impl.h"
16 #include "mojo/services/files/interfaces/file.mojom.h" 16 #include "mojo/services/files/interfaces/file.mojom.h"
17 #include "mojo/services/files/interfaces/types.mojom.h" 17 #include "mojo/services/files/interfaces/types.mojom.h"
18 #include "mojo/services/terminal/interfaces/terminal_client.mojom.h" 18 #include "mojo/services/terminal/interfaces/terminal_client.mojom.h"
19 19
20 const uint32_t kMaxBytesToRead = 1000; 20 const uint32_t kMaxBytesToRead = 1000;
21 21
22 // Owns itself. 22 // Owns itself.
23 class TerminalEchoer { 23 class TerminalEchoer {
24 public: 24 public:
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 88
89 StartReading(); 89 StartReading();
90 } 90 }
91 91
92 mojo::files::FilePtr terminal_; 92 mojo::files::FilePtr terminal_;
93 size_t last_bytes_read_size_; 93 size_t last_bytes_read_size_;
94 94
95 DISALLOW_COPY_AND_ASSIGN(TerminalEchoer); 95 DISALLOW_COPY_AND_ASSIGN(TerminalEchoer);
96 }; 96 };
97 97
98 class EchoTerminalApp 98 class EchoTerminalApp : public mojo::ApplicationImplBase,
99 : public mojo::ApplicationDelegate, 99 public mojo::terminal::TerminalClient {
100 public mojo::terminal::TerminalClient {
101 public: 100 public:
102 EchoTerminalApp() {} 101 EchoTerminalApp() {}
103 ~EchoTerminalApp() override {} 102 ~EchoTerminalApp() override {}
104 103
105 private: 104 private:
106 // |ApplicationDelegate| override: 105 // |ApplicationImplBase| override:
107 bool ConfigureIncomingConnection( 106 bool OnAcceptConnection(
108 mojo::ServiceProviderImpl* service_provider_impl) override { 107 mojo::ServiceProviderImpl* service_provider_impl) override {
109 service_provider_impl->AddService<mojo::terminal::TerminalClient>( 108 service_provider_impl->AddService<mojo::terminal::TerminalClient>(
110 [this](const mojo::ConnectionContext& connection_context, 109 [this](const mojo::ConnectionContext& connection_context,
111 mojo::InterfaceRequest<mojo::terminal::TerminalClient> 110 mojo::InterfaceRequest<mojo::terminal::TerminalClient>
112 terminal_client_request) { 111 terminal_client_request) {
113 terminal_clients_.AddBinding(this, terminal_client_request.Pass()); 112 terminal_clients_.AddBinding(this, terminal_client_request.Pass());
114 }); 113 });
115 return true; 114 return true;
116 } 115 }
117 116
118 // |mojo::terminal::TerminalClient| implementation: 117 // |mojo::terminal::TerminalClient| implementation:
119 void ConnectToTerminal( 118 void ConnectToTerminal(
120 mojo::InterfaceHandle<mojo::files::File> terminal) override { 119 mojo::InterfaceHandle<mojo::files::File> terminal) override {
121 DCHECK(terminal); 120 DCHECK(terminal);
122 // The |TerminalEchoer| will own itself. 121 // The |TerminalEchoer| will own itself.
123 (new TerminalEchoer(mojo::files::FilePtr::Create(std::move(terminal)))) 122 (new TerminalEchoer(mojo::files::FilePtr::Create(std::move(terminal))))
124 ->StartReading(); 123 ->StartReading();
125 } 124 }
126 125
127 mojo::BindingSet<mojo::terminal::TerminalClient> terminal_clients_; 126 mojo::BindingSet<mojo::terminal::TerminalClient> terminal_clients_;
128 127
129 DISALLOW_COPY_AND_ASSIGN(EchoTerminalApp); 128 DISALLOW_COPY_AND_ASSIGN(EchoTerminalApp);
130 }; 129 };
131 130
132 MojoResult MojoMain(MojoHandle application_request) { 131 MojoResult MojoMain(MojoHandle application_request) {
133 mojo::ApplicationRunnerChromium runner(new EchoTerminalApp()); 132 EchoTerminalApp echo_terminal_app;
134 return runner.Run(application_request); 133 return mojo::RunMainApplication(application_request, &echo_terminal_app);
135 } 134 }
OLDNEW
« no previous file with comments | « no previous file | examples/http_handler/http_handler.cc » ('j') | mojo/application/run_application.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698