OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 29 matching lines...) Expand all Loading... |
40 read_buffer_.resize(message_size * 2); | 40 read_buffer_.resize(message_size * 2); |
41 } | 41 } |
42 | 42 |
43 protected: | 43 protected: |
44 void WriteWaitThenRead(MojoHandle mp) { | 44 void WriteWaitThenRead(MojoHandle mp) { |
45 CHECK_EQ(MojoWriteMessage(mp, payload_.data(), | 45 CHECK_EQ(MojoWriteMessage(mp, payload_.data(), |
46 static_cast<uint32_t>(payload_.size()), nullptr, | 46 static_cast<uint32_t>(payload_.size()), nullptr, |
47 0, MOJO_WRITE_MESSAGE_FLAG_NONE), | 47 0, MOJO_WRITE_MESSAGE_FLAG_NONE), |
48 MOJO_RESULT_OK); | 48 MOJO_RESULT_OK); |
49 HandleSignalsState hss; | 49 HandleSignalsState hss; |
50 CHECK_EQ(MojoWait(mp, MOJO_HANDLE_SIGNAL_READABLE, MOJO_DEADLINE_INDEFINITE, | 50 CHECK_EQ(WaitForSignals(mp, MOJO_HANDLE_SIGNAL_READABLE, &hss), |
51 &hss), | |
52 MOJO_RESULT_OK); | 51 MOJO_RESULT_OK); |
53 uint32_t read_buffer_size = static_cast<uint32_t>(read_buffer_.size()); | 52 uint32_t read_buffer_size = static_cast<uint32_t>(read_buffer_.size()); |
54 CHECK_EQ(MojoReadMessage(mp, &read_buffer_[0], &read_buffer_size, nullptr, | 53 CHECK_EQ(MojoReadMessage(mp, &read_buffer_[0], &read_buffer_size, nullptr, |
55 nullptr, MOJO_READ_MESSAGE_FLAG_NONE), | 54 nullptr, MOJO_READ_MESSAGE_FLAG_NONE), |
56 MOJO_RESULT_OK); | 55 MOJO_RESULT_OK); |
57 CHECK_EQ(read_buffer_size, static_cast<uint32_t>(payload_.size())); | 56 CHECK_EQ(read_buffer_size, static_cast<uint32_t>(payload_.size())); |
58 } | 57 } |
59 | 58 |
60 void SendQuitMessage(MojoHandle mp) { | 59 void SendQuitMessage(MojoHandle mp) { |
61 CHECK_EQ(MojoWriteMessage(mp, "", 0, nullptr, 0, | 60 CHECK_EQ(MojoWriteMessage(mp, "", 0, nullptr, 0, |
(...skipping 29 matching lines...) Expand all Loading... |
91 | 90 |
92 SendQuitMessage(mp); | 91 SendQuitMessage(mp); |
93 } | 92 } |
94 | 93 |
95 static int RunPingPongClient(MojoHandle mp) { | 94 static int RunPingPongClient(MojoHandle mp) { |
96 std::string buffer(1000000, '\0'); | 95 std::string buffer(1000000, '\0'); |
97 int rv = 0; | 96 int rv = 0; |
98 while (true) { | 97 while (true) { |
99 // Wait for our end of the message pipe to be readable. | 98 // Wait for our end of the message pipe to be readable. |
100 HandleSignalsState hss; | 99 HandleSignalsState hss; |
101 MojoResult result = | 100 MojoResult result = WaitForSignals(mp, MOJO_HANDLE_SIGNAL_READABLE, &hss); |
102 MojoWait(mp, MOJO_HANDLE_SIGNAL_READABLE, | |
103 MOJO_DEADLINE_INDEFINITE, &hss); | |
104 if (result != MOJO_RESULT_OK) { | 101 if (result != MOJO_RESULT_OK) { |
105 rv = result; | 102 rv = result; |
106 break; | 103 break; |
107 } | 104 } |
108 | 105 |
109 uint32_t read_size = static_cast<uint32_t>(buffer.size()); | 106 uint32_t read_size = static_cast<uint32_t>(buffer.size()); |
110 CHECK_EQ(MojoReadMessage(mp, &buffer[0], | 107 CHECK_EQ(MojoReadMessage(mp, &buffer[0], |
111 &read_size, nullptr, | 108 &read_size, nullptr, |
112 0, MOJO_READ_MESSAGE_FLAG_NONE), | 109 0, MOJO_READ_MESSAGE_FLAG_NONE), |
113 MOJO_RESULT_OK); | 110 MOJO_RESULT_OK); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 // number of messages has been sent. | 158 // number of messages has been sent. |
162 TEST_F(MessagePipePerfTest, MultiprocessPingPong) { | 159 TEST_F(MessagePipePerfTest, MultiprocessPingPong) { |
163 RUN_CHILD_ON_PIPE(PingPongClient, h) | 160 RUN_CHILD_ON_PIPE(PingPongClient, h) |
164 RunPingPongServer(h); | 161 RunPingPongServer(h); |
165 END_CHILD() | 162 END_CHILD() |
166 } | 163 } |
167 | 164 |
168 } // namespace | 165 } // namespace |
169 } // namespace edk | 166 } // namespace edk |
170 } // namespace mojo | 167 } // namespace mojo |
OLD | NEW |