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