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

Side by Side Diff: examples/bank_app/bank.cc

Issue 1975253002: ApplicationConnection devolution, part 2.1. (Closed) Base URL: https://github.com/domokit/mojo.git@work792-x-work791_service_registry_spimpl
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 <memory> 5 #include <memory>
6 6
7 #include "examples/bank_app/bank.mojom.h" 7 #include "examples/bank_app/bank.mojom.h"
8 #include "mojo/common/binding_set.h" 8 #include "mojo/common/binding_set.h"
9 #include "mojo/public/c/system/main.h" 9 #include "mojo/public/c/system/main.h"
10 #include "mojo/public/cpp/application/application_connection.h" 10 #include "mojo/public/cpp/application/application_connection.h"
11 #include "mojo/public/cpp/application/application_delegate.h" 11 #include "mojo/public/cpp/application/application_delegate.h"
12 #include "mojo/public/cpp/application/application_impl.h" 12 #include "mojo/public/cpp/application/application_impl.h"
13 #include "mojo/public/cpp/application/application_runner.h" 13 #include "mojo/public/cpp/application/application_runner.h"
14 #include "mojo/public/cpp/application/connect.h" 14 #include "mojo/public/cpp/application/connect.h"
15 #include "mojo/public/cpp/application/interface_factory.h"
16 #include "mojo/public/cpp/bindings/strong_binding.h" 15 #include "mojo/public/cpp/bindings/strong_binding.h"
17 #include "mojo/public/cpp/utility/run_loop.h" 16 #include "mojo/public/cpp/utility/run_loop.h"
18 #include "mojo/services/vanadium/security/interfaces/principal.mojom.h" 17 #include "mojo/services/vanadium/security/interfaces/principal.mojom.h"
19 18
20 namespace examples { 19 namespace examples {
21 20
22 using vanadium::PrincipalServicePtr; 21 using vanadium::PrincipalServicePtr;
23 22
24 class BankImpl : public Bank { 23 class BankImpl : public Bank {
25 public: 24 public:
(...skipping 13 matching lines...) Expand all
39 void Run(const vanadium::UserPtr& user) const { 38 void Run(const vanadium::UserPtr& user) const {
40 user_->clear(); 39 user_->clear();
41 if (user) { 40 if (user) {
42 *user_ = user->email; 41 *user_ = user->email;
43 } 42 }
44 } 43 }
45 private: 44 private:
46 std::string *user_; 45 std::string *user_;
47 }; 46 };
48 47
49 class BankApp : public mojo::ApplicationDelegate, 48 class BankApp : public mojo::ApplicationDelegate {
50 public mojo::InterfaceFactory<Bank> {
51 public: 49 public:
52 BankApp() {} 50 BankApp() {}
53 51
54 void Initialize(mojo::ApplicationImpl* app) override { 52 void Initialize(mojo::ApplicationImpl* app) override {
55 mojo::ConnectToService(app->shell(), "mojo:principal_service", 53 mojo::ConnectToService(app->shell(), "mojo:principal_service",
56 GetProxy(&login_service_)); 54 GetProxy(&login_service_));
57 } 55 }
58 56
59 // From ApplicationDelegate 57 // From ApplicationDelegate
60 bool ConfigureIncomingConnection( 58 bool ConfigureIncomingConnection(
(...skipping 11 matching lines...) Expand all
72 return false; 70 return false;
73 } 71 }
74 // Record user access to the bank and reject customers that 72 // Record user access to the bank and reject customers that
75 // don't have a user identity. 73 // don't have a user identity.
76 if (user.empty()) { 74 if (user.empty()) {
77 MOJO_LOG(INFO) << "Rejecting customer without a user identity"; 75 MOJO_LOG(INFO) << "Rejecting customer without a user identity";
78 return false; 76 return false;
79 } 77 }
80 MOJO_LOG(INFO) << "Customer " << user << " accessing bank"; 78 MOJO_LOG(INFO) << "Customer " << user << " accessing bank";
81 } 79 }
82 connection->AddService(this); 80 connection->GetServiceProviderImpl().AddService<Bank>(
81 [this](const mojo::ConnectionContext& connection_context,
82 mojo::InterfaceRequest<Bank> bank_request) {
83 bindings_.AddBinding(&bank_impl_, bank_request.Pass());
84 });
83 return true; 85 return true;
84 } 86 }
85 87
86 void Create(const mojo::ConnectionContext& connection_context,
87 mojo::InterfaceRequest<Bank> request) override {
88 bindings_.AddBinding(&bank_impl_, request.Pass());
89 }
90
91 private: 88 private:
92 BankImpl bank_impl_; 89 BankImpl bank_impl_;
93 mojo::BindingSet<Bank> bindings_; 90 mojo::BindingSet<Bank> bindings_;
94 vanadium::PrincipalServicePtr login_service_; 91 vanadium::PrincipalServicePtr login_service_;
95 }; 92 };
96 93
97 } // namespace examples 94 } // namespace examples
98 95
99 MojoResult MojoMain(MojoHandle application_request) { 96 MojoResult MojoMain(MojoHandle application_request) {
100 mojo::ApplicationRunner runner( 97 mojo::ApplicationRunner runner(
101 std::unique_ptr<examples::BankApp>(new examples::BankApp())); 98 std::unique_ptr<examples::BankApp>(new examples::BankApp()));
102 return runner.Run(application_request); 99 return runner.Run(application_request);
103 } 100 }
OLDNEW
« no previous file with comments | « examples/apptest/example_service_application.cc ('k') | examples/content_handler_demo/content_handler_demo.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698