dbus_echo_app.cc revision 0de6073388f4e2780db8536178b129cd8f6ab386
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/public/cpp/bindings/allocation_scope.h" 11#include "mojo/public/cpp/environment/environment.h" 12#include "mojo/public/cpp/shell/application.h" 13#include "mojo/public/cpp/system/core.h" 14#include "mojo/public/cpp/system/macros.h" 15#include "mojo/public/cpp/utility/run_loop.h" 16#include "mojo/public/interfaces/shell/shell.mojom.h" 17#include "mojo/services/dbus_echo/echo.mojom.h" 18 19#if defined(WIN32) 20#if !defined(CDECL) 21#define CDECL __cdecl 22#endif 23#define DBUS_ECHO_APP_EXPORT __declspec(dllexport) 24#else 25#define CDECL 26#define DBUS_ECHO_APP_EXPORT __attribute__((visibility("default"))) 27#endif 28 29namespace mojo { 30namespace examples { 31 32class DBusEchoApp : public Application { 33 public: 34 explicit DBusEchoApp(MojoHandle shell_handle) : Application(shell_handle) { 35 ConnectTo("dbus:org.chromium.EchoService/org/chromium/MojoImpl", 36 &echo_service_); 37 38 AllocationScope scope; 39 echo_service_->Echo("who", base::Bind(&DBusEchoApp::OnEcho, 40 base::Unretained(this))); 41 } 42 43 virtual ~DBusEchoApp() { 44 } 45 46 private: 47 void OnEcho(const String& echoed) { 48 LOG(INFO) << "echo'd " << echoed.To<std::string>(); 49 } 50 51 EchoServicePtr echo_service_; 52}; 53 54} // namespace examples 55} // namespace mojo 56 57extern "C" DBUS_ECHO_APP_EXPORT MojoResult CDECL MojoMain( 58 MojoHandle shell_handle) { 59 mojo::Environment env; 60 mojo::RunLoop loop; 61 62 mojo::examples::DBusEchoApp app(shell_handle); 63 loop.Run(); 64 return MOJO_RESULT_OK; 65} 66