| Index: mojo/public/dart/mojo/lib/src/message_pipe.dart
|
| diff --git a/mojo/public/dart/mojo/lib/src/message_pipe.dart b/mojo/public/dart/mojo/lib/src/message_pipe.dart
|
| index 62c7cb3a88bc6aa7f40bfd9fe09f2b547c2fffd9..68ed35bb8b22da9e398838b944d7b262b5061963 100644
|
| --- a/mojo/public/dart/mojo/lib/src/message_pipe.dart
|
| +++ b/mojo/public/dart/mojo/lib/src/message_pipe.dart
|
| @@ -19,6 +19,28 @@ class MojoMessagePipeReadResult {
|
| }
|
| }
|
|
|
| +class MojoMessagePipeQueryAndReadResult {
|
| + MojoResult status;
|
| + ByteData bytesRead;
|
| + List<MojoHandle> handlesRead;
|
| +
|
| + MojoMessagePipeQueryAndReadResult.fromList(List result) {
|
| + status = new MojoResult(result[0]);
|
| + bytesRead = result[1];
|
| + if (result[2] != null) {
|
| + handlesRead = new List<MojoHandle>(result[2].length);
|
| + for (int i = 0; i < handlesRead.length; i++) {
|
| + handlesRead[i] = new MojoHandle(result[2][i]);
|
| + }
|
| + }
|
| + }
|
| +
|
| + String toString() {
|
| + return "MojoMessagePipeQueryAndReadResult("
|
| + "status: $status, bytesRead: $bytesRead, handlesRead: $handlesRead)";
|
| + }
|
| +}
|
| +
|
| class MojoMessagePipeEndpoint {
|
| static const int WRITE_FLAG_NONE = 0;
|
| static const int READ_FLAG_NONE = 0;
|
| @@ -109,6 +131,26 @@ class MojoMessagePipeEndpoint {
|
|
|
| MojoMessagePipeReadResult query() => read(null);
|
|
|
| + MojoMessagePipeQueryAndReadResult queryAndRead([int flags = 0]) {
|
| + if (handle == null) {
|
| + status = MojoResult.INVALID_ARGUMENT;
|
| + return null;
|
| + }
|
| +
|
| + List result =
|
| + MojoMessagePipeNatives.MojoQueryAndReadMessage(handle.h, flags);
|
| + if (result == null) {
|
| + status = MojoResult.INVALID_ARGUMENT;
|
| + return null;
|
| + }
|
| + assert((result is List) && (result.length == 3));
|
| +
|
| + var readResult = new MojoMessagePipeQueryAndReadResult.fromList(result);
|
| +
|
| + status = readResult.status;
|
| + return readResult;
|
| + }
|
| +
|
| bool setDescription(String description) {
|
| assert(MojoHandle._setHandleLeakDescription(handle, description));
|
| return true;
|
|
|