1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include <stdio.h> 6 #include <string> 7 8 #include "base/bind.h" 9 #include "base/logging.h" 10 #include "mojo/examples/echo/echo_service.mojom.h" 11 #include "mojo/public/c/system/main.h" 12 #include "mojo/public/cpp/application/application_delegate.h" 13 #include "mojo/public/cpp/application/application_impl.h" 14 #include "mojo/public/cpp/application/application_runner.h" 15 #include "mojo/public/cpp/environment/environment.h" 16 #include "mojo/public/cpp/system/core.h" 17 #include "mojo/public/cpp/system/macros.h" 18 19 namespace mojo { 20 namespace examples { 21 22 class DBusEchoApp : public ApplicationDelegate { 23 public: DBusEchoApp()24 DBusEchoApp() {} ~DBusEchoApp()25 virtual ~DBusEchoApp() {} 26 Initialize(ApplicationImpl * app)27 virtual void Initialize(ApplicationImpl* app) MOJO_OVERRIDE { 28 app->ConnectToService( 29 "dbus:org.chromium.EchoService/org/chromium/MojoImpl", &echo_service_); 30 31 echo_service_->EchoString( 32 String::From("who"), 33 base::Bind(&DBusEchoApp::OnEcho, base::Unretained(this))); 34 } 35 36 private: OnEcho(String echoed)37 void OnEcho(String echoed) { 38 LOG(INFO) << "echo'd " << echoed; 39 } 40 41 EchoServicePtr echo_service_; 42 43 DISALLOW_COPY_AND_ASSIGN(DBusEchoApp); 44 }; 45 46 } // namespace examples 47 } // namespace mojo 48 MojoMain(MojoHandle shell_handle)49MojoResult MojoMain(MojoHandle shell_handle) { 50 mojo::ApplicationRunner runner(new mojo::examples::DBusEchoApp); 51 return runner.Run(shell_handle); 52 } 53