15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include <stdio.h> 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include <string> 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/bind.h" 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/logging.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/examples/echo/echo_service.mojom.h" 1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/public/c/system/main.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_delegate.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/public/cpp/application/application_impl.h" 1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/public/cpp/application/application_runner.h" 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "mojo/public/cpp/environment/environment.h" 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "mojo/public/cpp/system/core.h" 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "mojo/public/cpp/system/macros.h" 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace mojo { 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace examples { 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass DBusEchoApp : public ApplicationDelegate { 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public: 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DBusEchoApp() {} 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual ~DBusEchoApp() {} 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Initialize(ApplicationImpl* app) MOJO_OVERRIDE { 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch app->ConnectToService( 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch "dbus:org.chromium.EchoService/org/chromium/MojoImpl", &echo_service_); 300de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci echo_service_->EchoString( 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) String::From("who"), 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::Bind(&DBusEchoApp::OnEcho, base::Unretained(this))); 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private: 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void OnEcho(String echoed) { 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) LOG(INFO) << "echo'd " << echoed; 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 410de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) EchoServicePtr echo_service_; 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DBusEchoApp); 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}; 455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace examples 4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} // namespace mojo 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 4903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)MojoResult MojoMain(MojoHandle shell_handle) { 5003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) mojo::ApplicationRunner runner(new mojo::examples::DBusEchoApp); 5103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return runner.Run(shell_handle); 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 53