Index: mojo/edk/system/data_pipe_control_message.cc |
diff --git a/mojo/edk/system/data_pipe_control_message.cc b/mojo/edk/system/data_pipe_control_message.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e81df6a95d6c5a8faa4dcbb3ac52301f09f37c98 |
--- /dev/null |
+++ b/mojo/edk/system/data_pipe_control_message.cc |
@@ -0,0 +1,35 @@ |
+// Copyright 2016 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/edk/system/data_pipe_control_message.h" |
+ |
+#include "mojo/edk/embedder/platform_handle_vector.h" |
+#include "mojo/edk/system/node_controller.h" |
+#include "mojo/edk/system/ports_message.h" |
+ |
+namespace mojo { |
+namespace edk { |
+ |
+void SendDataPipeControlMessage(NodeController* node_controller, |
+ const ports::PortRef& port, |
+ DataPipeCommand command, |
+ uint32_t num_bytes) { |
+ scoped_ptr<PortsMessage> message = |
+ PortsMessage::NewUserMessage(sizeof(DataPipeControlMessage), 0, 0); |
+ CHECK(message); |
+ |
+ DataPipeControlMessage* data = |
+ static_cast<DataPipeControlMessage*>(message->mutable_payload_bytes()); |
+ data->command = command; |
+ data->num_bytes = num_bytes; |
+ |
+ int rv = node_controller->SendMessage(port, &message); |
+ if (rv != ports::OK && rv != ports::ERROR_PORT_PEER_CLOSED) { |
+ DLOG(ERROR) << "Unexpected failure sending data pipe control message: " |
+ << rv; |
+ } |
+} |
+ |
+} // namespace edk |
+} // namespace mojo |