| Index: mojo/public/bindings/generated/sample_service_proxy.cc
|
| diff --git a/mojo/public/bindings/generated/sample_service_proxy.cc b/mojo/public/bindings/generated/sample_service_proxy.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c7084cc313ff301d116948b532b0ee4dc819e802
|
| --- /dev/null
|
| +++ b/mojo/public/bindings/generated/sample_service_proxy.cc
|
| @@ -0,0 +1,53 @@
|
| +// Copyright 2013 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 "mojo/public/bindings/generated/sample_service_proxy.h"
|
| +
|
| +#include "mojo/public/bindings/generated/sample_service_internal.h"
|
| +
|
| +namespace sample {
|
| +
|
| +ServiceProxy::ServiceProxy(mojo::MessageSender* sender)
|
| + : sender_(sender) {
|
| +}
|
| +
|
| +void ServiceProxy::Frobinate(const Foo* foo, bool baz) {
|
| + mojo::MessageBuffer buf;
|
| +
|
| + // TODO: We should allocate the MessageHeader here to reserve space.
|
| + //MessageHeader* header = buf.Alloc<MessageHeader>();
|
| +
|
| + // We now go about allocating the anonymous Frobinate_Params struct. It
|
| + // holds the parameters to the Frobinate message.
|
| + //
|
| + // Notice how foo is cloned. This causes a copy of foo to be generated
|
| + // within the same buffer as the Frobinate_Params struct. That's what we
|
| + // need in order to generate a continguous blob of message data.
|
| +
|
| + internal::Service_Frobinate_Params* params =
|
| + buf.Alloc<internal::Service_Frobinate_Params>();
|
| + params->set_foo(mojo::internal::Clone(foo, &buf));
|
| + params->set_baz(baz);
|
| +
|
| + // NOTE: If foo happened to be a graph with cycles, then Clone would not
|
| + // have returned.
|
| +
|
| + // Last step before sending the message is to encode pointers and handles
|
| + // so that messages become hermetic. Pointers become offsets and handles
|
| + // becomes indices into the handles array.
|
| +
|
| + std::vector<mojo::Handle> handles;
|
| + mojo::internal::EncodePointersAndHandles(params, &handles);
|
| +
|
| + mojo::Message message;
|
| + message.name = internal::kService_Frobinate_Name;
|
| + message.data_start = buf.data();
|
| + message.data_end = buf.data() + buf.size();
|
| + message.handles_start = &handles[0];
|
| + message.handles_end = &handles[0] + handles.size();
|
| +
|
| + sender_->Send(message);
|
| +}
|
| +
|
| +} // namespace sample
|
|
|