Home | History | Annotate | Download | only in dbus_echo
      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