Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1797)

Unified Diff: mojo/public/cpp/system/message_pipe.h

Issue 1785843002: [mojo] Implement pipe fusion API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/cpp/system/message_pipe.h
diff --git a/mojo/public/cpp/system/message_pipe.h b/mojo/public/cpp/system/message_pipe.h
index fab23e4797849543c1ab14cbc8a595af4e5035d5..60bffaa1b9351e6030e50036d4a1ec963cdb767b 100644
--- a/mojo/public/cpp/system/message_pipe.h
+++ b/mojo/public/cpp/system/message_pipe.h
@@ -89,6 +89,25 @@ inline MojoResult ReadMessageRaw(MessagePipeHandle message_pipe,
message_pipe.value(), bytes, num_bytes, handles, num_handles, flags);
}
+// Fuses two message pipes together at the given handles. See
+// |MojoFuseMessagePipes()| for complete documentation. Note that this may
+// reset the passed handle arguments on success or unrecoverable failure.
+inline MojoResult FuseMessagePipes(ScopedMessagePipeHandle *message_pipe0,
yzshen1 2016/03/10 23:49:03 nit: * should be adjacent to the type, instead of
Ken Rockot(use gerrit already) 2016/03/11 00:32:46 WontFix - obsolete :)
+ ScopedMessagePipeHandle *message_pipe1) {
+ MojoResult result = MojoFuseMessagePipes(message_pipe0->get().value(),
+ message_pipe1->get().value());
+ if (result == MOJO_RESULT_INVALID_ARGUMENT)
+ return result;
+
+ CHECK(result == MOJO_RESULT_FAILED_PRECONDITION || result == MOJO_RESULT_OK);
+
+ // The handles were closed internally.
+ (void)message_pipe0->release();
+ (void)message_pipe1->release();
+
+ return result;
+}
+
// A wrapper class that automatically creates a message pipe and owns both
// handles.
class MessagePipe {

Powered by Google App Engine
This is Rietveld 408576698