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..d059e25944e5a83eb829ca1d77ac655874e3996e |
--- /dev/null |
+++ b/mojo/public/bindings/generated/sample_service_proxy.cc |
@@ -0,0 +1,52 @@ |
+// 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::Handle port) { |
+ mojo::MessageBuffer buf; |
+ |
+ // TODO: We should allocate the MessageHeader here to reserve space. |
+ |
+ // 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 = |
viettrungluu
2013/10/02 01:17:06
I wonder if in the case that params is small (and
|
+ buf.New<internal::Service_Frobinate_Params>(); |
+ params->set_foo(mojo::internal::Clone(foo, &buf)); |
+ params->set_baz(baz); |
+ params->set_port(port); |
+ |
+ // 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(); |
viettrungluu
2013/10/02 01:17:06
... which makes me think that MessageBuffer should
|
+ message.data_end = buf.data() + buf.size(); |
+ message.handles.swap(handles); |
+ |
+ sender_->Send(message); |
+} |
+ |
+} // namespace sample |