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