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 "base/at_exit.h" 6#include "base/callback.h" 7#include "base/command_line.h" 8#include "base/logging.h" 9#include "base/memory/scoped_ptr.h" 10#include "base/message_loop/message_loop.h" 11#include "base/run_loop.h" 12#include "mojo/dbus/dbus_external_service.h" 13#include "mojo/embedder/channel_init.h" 14#include "mojo/embedder/embedder.h" 15#include "mojo/embedder/simple_platform_support.h" 16#include "mojo/examples/echo/echo_service.mojom.h" 17#include "mojo/public/cpp/environment/environment.h" 18 19namespace { 20class EchoServiceImpl 21 : public mojo::InterfaceImpl<mojo::examples::EchoService> { 22 public: 23 EchoServiceImpl() {} 24 virtual ~EchoServiceImpl() {} 25 26 protected: 27 virtual void EchoString( 28 const mojo::String& in_to_echo, 29 const mojo::Callback<void(mojo::String)>& callback) OVERRIDE { 30 DVLOG(1) << "Asked to echo " << in_to_echo; 31 callback.Run(in_to_echo); 32 } 33}; 34 35const char kServiceName[] = "org.chromium.EchoService"; 36} // anonymous namespace 37 38int main(int argc, char** argv) { 39 base::AtExitManager exit_manager; 40 base::CommandLine::Init(argc, argv); 41 42 logging::LoggingSettings settings; 43 settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; 44 logging::InitLogging(settings); 45 logging::SetLogItems(false, // Process ID 46 false, // Thread ID 47 false, // Timestamp 48 false); // Tick count 49 50 mojo::embedder::Init(scoped_ptr<mojo::embedder::PlatformSupport>( 51 new mojo::embedder::SimplePlatformSupport())); 52 53 base::MessageLoopForIO message_loop; 54 base::RunLoop run_loop; 55 56 mojo::DBusExternalService<EchoServiceImpl> echo_service(kServiceName); 57 echo_service.Start(); 58 59 run_loop.Run(); 60 return 0; 61} 62