Home | History | Annotate | Download | only in 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 "mojo/examples/echo/echo_service.mojom.h"
      6 #include "mojo/public/c/system/main.h"
      7 #include "mojo/public/cpp/application/application_connection.h"
      8 #include "mojo/public/cpp/application/application_delegate.h"
      9 #include "mojo/public/cpp/application/application_runner.h"
     10 #include "mojo/public/cpp/application/interface_factory_impl.h"
     11 
     12 namespace mojo {
     13 namespace examples {
     14 
     15 class EchoServiceImpl : public InterfaceImpl<EchoService> {
     16  public:
     17   virtual void EchoString(
     18       const String& value,
     19       const Callback<void(String)>& callback) MOJO_OVERRIDE {
     20     callback.Run(value);
     21   }
     22 };
     23 
     24 class EchoServiceDelegate : public ApplicationDelegate {
     25  public:
     26   virtual bool ConfigureIncomingConnection(ApplicationConnection* connection)
     27       MOJO_OVERRIDE {
     28     connection->AddService(&echo_service_factory_);
     29     return true;
     30   }
     31 
     32  private:
     33   InterfaceFactoryImpl<EchoServiceImpl> echo_service_factory_;
     34 };
     35 
     36 }  // namespace examples
     37 }  // namespace mojo
     38 
     39 MojoResult MojoMain(MojoHandle shell_handle) {
     40   mojo::ApplicationRunner runner(new mojo::examples::EchoServiceDelegate);
     41   return runner.Run(shell_handle);
     42 }
     43