blob: 8fb9357afcf8c156db939613bc90bd433fa66123 [file] [log] [blame]
// 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.
// This example demonstrates the simple use of SynchronousInterfacePtr<>, which
// is the blocking, synchronous version of mojom interface calls (typically used
// via InterfacePtr<>).
#include <memory>
#include <utility>
#include "examples/echo/echo.mojom-sync.h"
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_delegate.h"
#include "mojo/public/cpp/application/application_impl.h"
#include "mojo/public/cpp/application/application_runner.h"
#include "mojo/public/cpp/application/connect.h"
#include "mojo/public/cpp/bindings/synchronous_interface_ptr.h"
#include "mojo/public/cpp/environment/logging.h"
#include "mojo/public/cpp/utility/run_loop.h"
namespace mojo {
namespace examples {
class EchoClientDelegate : public ApplicationDelegate {
public:
void Initialize(ApplicationImpl* app) override {
SynchronousInterfacePtr<Echo> echo;
ConnectToService(app->shell(), "mojo:echo_server",
GetSynchronousProxy(&echo));
mojo::String out = "yo!";
MOJO_CHECK(echo->EchoString("hello", &out));
MOJO_LOG(INFO) << "Got response: " << out;
RunLoop::current()->Quit();
}
};
} // namespace examples
} // namespace mojo
MojoResult MojoMain(MojoHandle application_request) {
mojo::ApplicationRunner runner(
std::unique_ptr<mojo::examples::EchoClientDelegate>(
new mojo::examples::EchoClientDelegate()));
return runner.Run(application_request);
}