// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "examples/echo/echo_service.mojom.h"
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_connection.h"
#include "mojo/public/cpp/application/application_delegate.h"
#include "mojo/public/cpp/application/application_runner.h"
#include "mojo/public/cpp/application/interface_factory_impl.h"

namespace mojo {
namespace examples {

class EchoServiceImpl : public InterfaceImpl<EchoService> {
 public:
  virtual void EchoString(const String& value,
                          const Callback<void(String)>& callback) override {
    callback.Run(value);
  }
};

class EchoServiceDelegate : public ApplicationDelegate {
 public:
  virtual bool ConfigureIncomingConnection(
      ApplicationConnection* connection) override {
    connection->AddService(&echo_service_factory_);
    return true;
  }

 private:
  InterfaceFactoryImpl<EchoServiceImpl> echo_service_factory_;
};

}  // namespace examples
}  // namespace mojo

MojoResult MojoMain(MojoHandle shell_handle) {
  mojo::ApplicationRunner runner(new mojo::examples::EchoServiceDelegate);
  return runner.Run(shell_handle);
}
