| 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 <stdint.h> | 5 #include <stdint.h> |
| 6 #include <stdio.h> | 6 #include <stdio.h> |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, | 199 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, |
| 200 123, nullptr)); | 200 123, nullptr)); |
| 201 | 201 |
| 202 // Write to MP 0, port 0. | 202 // Write to MP 0, port 0. |
| 203 EXPECT_EQ( | 203 EXPECT_EQ( |
| 204 MOJO_RESULT_OK, | 204 MOJO_RESULT_OK, |
| 205 mp0->WriteMessage(0, UserPointer<const void>(kHello), sizeof(kHello), | 205 mp0->WriteMessage(0, UserPointer<const void>(kHello), sizeof(kHello), |
| 206 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 206 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 207 | 207 |
| 208 // Wait. | 208 // Wait. |
| 209 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 209 EXPECT_EQ(MOJO_RESULT_OK, |
| 210 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 210 EXPECT_EQ(123u, context); | 211 EXPECT_EQ(123u, context); |
| 211 hss = HandleSignalsState(); | 212 hss = HandleSignalsState(); |
| 212 mp1->RemoveAwakable(1, &waiter, &hss); | 213 mp1->RemoveAwakable(1, &waiter, &hss); |
| 213 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 214 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 214 hss.satisfied_signals); | 215 hss.satisfied_signals); |
| 215 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 216 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 216 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 217 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 217 hss.satisfiable_signals); | 218 hss.satisfiable_signals); |
| 218 | 219 |
| 219 // Read from MP 1, port 1. | 220 // Read from MP 1, port 1. |
| 220 EXPECT_EQ(MOJO_RESULT_OK, | 221 EXPECT_EQ(MOJO_RESULT_OK, |
| 221 mp1->ReadMessage(1, UserPointer<void>(buffer), | 222 mp1->ReadMessage(1, UserPointer<void>(buffer), |
| 222 MakeUserPointer(&buffer_size), nullptr, nullptr, | 223 MakeUserPointer(&buffer_size), nullptr, nullptr, |
| 223 MOJO_READ_MESSAGE_FLAG_NONE)); | 224 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 224 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); | 225 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); |
| 225 EXPECT_STREQ(kHello, buffer); | 226 EXPECT_STREQ(kHello, buffer); |
| 226 | 227 |
| 227 // Write in the other direction: MP 1, port 1 -> ... -> MP 0, port 0. | 228 // Write in the other direction: MP 1, port 1 -> ... -> MP 0, port 0. |
| 228 | 229 |
| 229 waiter.Init(); | 230 waiter.Init(); |
| 230 ASSERT_EQ(MOJO_RESULT_OK, | 231 ASSERT_EQ(MOJO_RESULT_OK, |
| 231 mp0->AddAwakable(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, | 232 mp0->AddAwakable(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, |
| 232 456, nullptr)); | 233 456, nullptr)); |
| 233 | 234 |
| 234 EXPECT_EQ( | 235 EXPECT_EQ( |
| 235 MOJO_RESULT_OK, | 236 MOJO_RESULT_OK, |
| 236 mp1->WriteMessage(1, UserPointer<const void>(kWorld), sizeof(kWorld), | 237 mp1->WriteMessage(1, UserPointer<const void>(kWorld), sizeof(kWorld), |
| 237 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 238 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 238 | 239 |
| 239 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 240 EXPECT_EQ(MOJO_RESULT_OK, |
| 241 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 240 EXPECT_EQ(456u, context); | 242 EXPECT_EQ(456u, context); |
| 241 hss = HandleSignalsState(); | 243 hss = HandleSignalsState(); |
| 242 mp0->RemoveAwakable(0, &waiter, &hss); | 244 mp0->RemoveAwakable(0, &waiter, &hss); |
| 243 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 245 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 244 hss.satisfied_signals); | 246 hss.satisfied_signals); |
| 245 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 247 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 246 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 248 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 247 hss.satisfiable_signals); | 249 hss.satisfiable_signals); |
| 248 | 250 |
| 249 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 251 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 250 EXPECT_EQ(MOJO_RESULT_OK, | 252 EXPECT_EQ(MOJO_RESULT_OK, |
| 251 mp0->ReadMessage(0, UserPointer<void>(buffer), | 253 mp0->ReadMessage(0, UserPointer<void>(buffer), |
| 252 MakeUserPointer(&buffer_size), nullptr, nullptr, | 254 MakeUserPointer(&buffer_size), nullptr, nullptr, |
| 253 MOJO_READ_MESSAGE_FLAG_NONE)); | 255 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 254 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size)); | 256 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size)); |
| 255 EXPECT_STREQ(kWorld, buffer); | 257 EXPECT_STREQ(kWorld, buffer); |
| 256 | 258 |
| 257 // Close MP 0, port 0. | 259 // Close MP 0, port 0. |
| 258 mp0->Close(0); | 260 mp0->Close(0); |
| 259 | 261 |
| 260 // Try to wait for MP 1, port 1 to become readable. This will eventually fail | 262 // Try to wait for MP 1, port 1 to become readable. This will eventually fail |
| 261 // when it realizes that MP 0, port 0 has been closed. (It may also fail | 263 // when it realizes that MP 0, port 0 has been closed. (It may also fail |
| 262 // immediately.) | 264 // immediately.) |
| 263 waiter.Init(); | 265 waiter.Init(); |
| 264 hss = HandleSignalsState(); | 266 hss = HandleSignalsState(); |
| 265 MojoResult result = mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, | 267 MojoResult result = mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, |
| 266 false, 789, &hss); | 268 false, 789, &hss); |
| 267 if (result == MOJO_RESULT_OK) { | 269 if (result == MOJO_RESULT_OK) { |
| 268 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 270 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
| 269 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 271 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 270 EXPECT_EQ(789u, context); | 272 EXPECT_EQ(789u, context); |
| 271 hss = HandleSignalsState(); | 273 hss = HandleSignalsState(); |
| 272 mp1->RemoveAwakable(1, &waiter, &hss); | 274 mp1->RemoveAwakable(1, &waiter, &hss); |
| 273 } | 275 } |
| 274 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); | 276 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); |
| 275 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); | 277 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); |
| 276 | 278 |
| 277 // And MP 1, port 1. | 279 // And MP 1, port 1. |
| 278 mp1->Close(1); | 280 mp1->Close(1); |
| 279 } | 281 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 295 | 297 |
| 296 // Close MP 0, port 0. | 298 // Close MP 0, port 0. |
| 297 mp0->Close(0); | 299 mp0->Close(0); |
| 298 | 300 |
| 299 // Try to wait for MP 1, port 1 to be signaled with peer closed. | 301 // Try to wait for MP 1, port 1 to be signaled with peer closed. |
| 300 waiter.Init(); | 302 waiter.Init(); |
| 301 hss = HandleSignalsState(); | 303 hss = HandleSignalsState(); |
| 302 MojoResult result = mp1->AddAwakable( | 304 MojoResult result = mp1->AddAwakable( |
| 303 1, &waiter, MOJO_HANDLE_SIGNAL_PEER_CLOSED, false, 101, &hss); | 305 1, &waiter, MOJO_HANDLE_SIGNAL_PEER_CLOSED, false, 101, &hss); |
| 304 if (result == MOJO_RESULT_OK) { | 306 if (result == MOJO_RESULT_OK) { |
| 305 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 307 EXPECT_EQ(MOJO_RESULT_OK, |
| 308 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 306 EXPECT_EQ(101u, context); | 309 EXPECT_EQ(101u, context); |
| 307 hss = HandleSignalsState(); | 310 hss = HandleSignalsState(); |
| 308 mp1->RemoveAwakable(1, &waiter, &hss); | 311 mp1->RemoveAwakable(1, &waiter, &hss); |
| 309 } | 312 } |
| 310 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); | 313 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfied_signals); |
| 311 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); | 314 EXPECT_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, hss.satisfiable_signals); |
| 312 | 315 |
| 313 // And MP 1, port 1. | 316 // And MP 1, port 1. |
| 314 mp1->Close(1); | 317 mp1->Close(1); |
| 315 } | 318 } |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 waiter.Init(); | 358 waiter.Init(); |
| 356 ASSERT_EQ(MOJO_RESULT_OK, | 359 ASSERT_EQ(MOJO_RESULT_OK, |
| 357 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, | 360 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, |
| 358 123, nullptr)); | 361 123, nullptr)); |
| 359 | 362 |
| 360 EXPECT_EQ(MOJO_RESULT_OK, | 363 EXPECT_EQ(MOJO_RESULT_OK, |
| 361 mp0->WriteMessage(0, UserPointer<const void>(endpoint_info.get()), | 364 mp0->WriteMessage(0, UserPointer<const void>(endpoint_info.get()), |
| 362 static_cast<uint32_t>(endpoint_info_size), | 365 static_cast<uint32_t>(endpoint_info_size), |
| 363 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 366 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 364 | 367 |
| 365 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 368 EXPECT_EQ(MOJO_RESULT_OK, |
| 369 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 366 EXPECT_EQ(123u, context); | 370 EXPECT_EQ(123u, context); |
| 367 hss = HandleSignalsState(); | 371 hss = HandleSignalsState(); |
| 368 mp1->RemoveAwakable(1, &waiter, &hss); | 372 mp1->RemoveAwakable(1, &waiter, &hss); |
| 369 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 373 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 370 hss.satisfied_signals); | 374 hss.satisfied_signals); |
| 371 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 375 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 372 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 376 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 373 hss.satisfiable_signals); | 377 hss.satisfiable_signals); |
| 374 | 378 |
| 375 EXPECT_EQ(endpoint_info_size, channels(1)->GetSerializedEndpointSize()); | 379 EXPECT_EQ(endpoint_info_size, channels(1)->GetSerializedEndpointSize()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 395 waiter.Init(); | 399 waiter.Init(); |
| 396 ASSERT_EQ(MOJO_RESULT_OK, | 400 ASSERT_EQ(MOJO_RESULT_OK, |
| 397 mp3->AddAwakable(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, | 401 mp3->AddAwakable(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, |
| 398 789, nullptr)); | 402 789, nullptr)); |
| 399 | 403 |
| 400 EXPECT_EQ( | 404 EXPECT_EQ( |
| 401 MOJO_RESULT_OK, | 405 MOJO_RESULT_OK, |
| 402 mp2->WriteMessage(0, UserPointer<const void>(kHello), sizeof(kHello), | 406 mp2->WriteMessage(0, UserPointer<const void>(kHello), sizeof(kHello), |
| 403 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 407 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 404 | 408 |
| 405 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 409 EXPECT_EQ(MOJO_RESULT_OK, |
| 410 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 406 EXPECT_EQ(789u, context); | 411 EXPECT_EQ(789u, context); |
| 407 hss = HandleSignalsState(); | 412 hss = HandleSignalsState(); |
| 408 mp3->RemoveAwakable(0, &waiter, &hss); | 413 mp3->RemoveAwakable(0, &waiter, &hss); |
| 409 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 414 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 410 hss.satisfied_signals); | 415 hss.satisfied_signals); |
| 411 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 416 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 412 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 417 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 413 hss.satisfiable_signals); | 418 hss.satisfiable_signals); |
| 414 | 419 |
| 415 // Make sure there's nothing on MP 0, port 0 or MP 1, port 1 or MP 2, port 0. | 420 // Make sure there's nothing on MP 0, port 0 or MP 1, port 1 or MP 2, port 0. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 443 waiter.Init(); | 448 waiter.Init(); |
| 444 ASSERT_EQ(MOJO_RESULT_OK, | 449 ASSERT_EQ(MOJO_RESULT_OK, |
| 445 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, | 450 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, |
| 446 123, nullptr)); | 451 123, nullptr)); |
| 447 | 452 |
| 448 EXPECT_EQ( | 453 EXPECT_EQ( |
| 449 MOJO_RESULT_OK, | 454 MOJO_RESULT_OK, |
| 450 mp0->WriteMessage(0, UserPointer<const void>(kWorld), sizeof(kWorld), | 455 mp0->WriteMessage(0, UserPointer<const void>(kWorld), sizeof(kWorld), |
| 451 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 456 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 452 | 457 |
| 453 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 458 EXPECT_EQ(MOJO_RESULT_OK, |
| 459 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 454 EXPECT_EQ(123u, context); | 460 EXPECT_EQ(123u, context); |
| 455 hss = HandleSignalsState(); | 461 hss = HandleSignalsState(); |
| 456 mp1->RemoveAwakable(1, &waiter, &hss); | 462 mp1->RemoveAwakable(1, &waiter, &hss); |
| 457 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 463 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 458 hss.satisfied_signals); | 464 hss.satisfied_signals); |
| 459 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 465 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 460 MOJO_HANDLE_SIGNAL_PEER_CLOSED | MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 466 MOJO_HANDLE_SIGNAL_PEER_CLOSED | MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 461 hss.satisfiable_signals); | 467 hss.satisfiable_signals); |
| 462 | 468 |
| 463 // Make sure there's nothing on the other ports. | 469 // Make sure there's nothing on the other ports. |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 // Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do | 529 // Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do |
| 524 // it later, it might already be readable.) | 530 // it later, it might already be readable.) |
| 525 waiter.Init(); | 531 waiter.Init(); |
| 526 ASSERT_EQ(MOJO_RESULT_OK, | 532 ASSERT_EQ(MOJO_RESULT_OK, |
| 527 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, | 533 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, |
| 528 123, nullptr)); | 534 123, nullptr)); |
| 529 | 535 |
| 530 BootstrapChannelEndpointNoWait(1, std::move(ep1)); | 536 BootstrapChannelEndpointNoWait(1, std::move(ep1)); |
| 531 | 537 |
| 532 // Wait. | 538 // Wait. |
| 533 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 539 EXPECT_EQ(MOJO_RESULT_OK, |
| 540 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 534 EXPECT_EQ(123u, context); | 541 EXPECT_EQ(123u, context); |
| 535 hss = HandleSignalsState(); | 542 hss = HandleSignalsState(); |
| 536 // Note: MP 1, port 1 should definitely should be readable, but it may or may | 543 // Note: MP 1, port 1 should definitely should be readable, but it may or may |
| 537 // not appear as writable (there's a race, and it may not have noticed that | 544 // not appear as writable (there's a race, and it may not have noticed that |
| 538 // the other side was closed yet -- e.g., inserting a sleep here would make it | 545 // the other side was closed yet -- e.g., inserting a sleep here would make it |
| 539 // much more likely to notice that it's no longer writable). | 546 // much more likely to notice that it's no longer writable). |
| 540 mp1->RemoveAwakable(1, &waiter, &hss); | 547 mp1->RemoveAwakable(1, &waiter, &hss); |
| 541 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)); | 548 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)); |
| 542 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE)); | 549 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE)); |
| 543 | 550 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 585 // Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do | 592 // Prepare to wait on MP 1, port 1. (Add the waiter now. Otherwise, if we do |
| 586 // it later, it might already be readable.) | 593 // it later, it might already be readable.) |
| 587 waiter.Init(); | 594 waiter.Init(); |
| 588 ASSERT_EQ(MOJO_RESULT_OK, | 595 ASSERT_EQ(MOJO_RESULT_OK, |
| 589 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, | 596 mp1->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, false, |
| 590 123, nullptr)); | 597 123, nullptr)); |
| 591 | 598 |
| 592 BootstrapChannelEndpointNoWait(1, std::move(ep1)); | 599 BootstrapChannelEndpointNoWait(1, std::move(ep1)); |
| 593 | 600 |
| 594 // Wait. | 601 // Wait. |
| 595 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 602 EXPECT_EQ(MOJO_RESULT_OK, |
| 603 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 596 EXPECT_EQ(123u, context); | 604 EXPECT_EQ(123u, context); |
| 597 hss = HandleSignalsState(); | 605 hss = HandleSignalsState(); |
| 598 // Note: MP 1, port 1 should definitely should be readable, but it may or may | 606 // Note: MP 1, port 1 should definitely should be readable, but it may or may |
| 599 // not appear as writable (there's a race, and it may not have noticed that | 607 // not appear as writable (there's a race, and it may not have noticed that |
| 600 // the other side was closed yet -- e.g., inserting a sleep here would make it | 608 // the other side was closed yet -- e.g., inserting a sleep here would make it |
| 601 // much more likely to notice that it's no longer writable). | 609 // much more likely to notice that it's no longer writable). |
| 602 mp1->RemoveAwakable(1, &waiter, &hss); | 610 mp1->RemoveAwakable(1, &waiter, &hss); |
| 603 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)); | 611 EXPECT_TRUE((hss.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)); |
| 604 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE)); | 612 EXPECT_TRUE((hss.satisfiable_signals & MOJO_HANDLE_SIGNAL_READABLE)); |
| 605 | 613 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 655 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 663 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 656 transport.End(); | 664 transport.End(); |
| 657 | 665 |
| 658 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when | 666 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when |
| 659 // the |handle.dispatcher| is destroyed. | 667 // the |handle.dispatcher| is destroyed. |
| 660 EXPECT_TRUE(handle.dispatcher->HasOneRef()); | 668 EXPECT_TRUE(handle.dispatcher->HasOneRef()); |
| 661 handle.reset(); | 669 handle.reset(); |
| 662 } | 670 } |
| 663 | 671 |
| 664 // Wait. | 672 // Wait. |
| 665 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 673 EXPECT_EQ(MOJO_RESULT_OK, |
| 674 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 666 EXPECT_EQ(123u, context); | 675 EXPECT_EQ(123u, context); |
| 667 hss = HandleSignalsState(); | 676 hss = HandleSignalsState(); |
| 668 mp1->RemoveAwakable(1, &waiter, &hss); | 677 mp1->RemoveAwakable(1, &waiter, &hss); |
| 669 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 678 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 670 hss.satisfied_signals); | 679 hss.satisfied_signals); |
| 671 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 680 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 672 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 681 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 673 hss.satisfiable_signals); | 682 hss.satisfiable_signals); |
| 674 | 683 |
| 675 // Read from MP 1, port 1. | 684 // Read from MP 1, port 1. |
| (...skipping 28 matching lines...) Expand all Loading... |
| 704 // Write to "local_mp", port 1. | 713 // Write to "local_mp", port 1. |
| 705 EXPECT_EQ( | 714 EXPECT_EQ( |
| 706 MOJO_RESULT_OK, | 715 MOJO_RESULT_OK, |
| 707 local_mp->WriteMessage(1, UserPointer<const void>(kHello), sizeof(kHello), | 716 local_mp->WriteMessage(1, UserPointer<const void>(kHello), sizeof(kHello), |
| 708 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 717 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 709 | 718 |
| 710 // TODO(vtl): FIXME -- We (racily) crash if I close |dispatcher| immediately | 719 // TODO(vtl): FIXME -- We (racily) crash if I close |dispatcher| immediately |
| 711 // here. (We don't crash if I sleep and then close.) | 720 // here. (We don't crash if I sleep and then close.) |
| 712 | 721 |
| 713 // Wait for the dispatcher to become readable. | 722 // Wait for the dispatcher to become readable. |
| 714 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 723 EXPECT_EQ(MOJO_RESULT_OK, |
| 724 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 715 EXPECT_EQ(456u, context); | 725 EXPECT_EQ(456u, context); |
| 716 hss = HandleSignalsState(); | 726 hss = HandleSignalsState(); |
| 717 dispatcher->RemoveAwakable(&waiter, &hss); | 727 dispatcher->RemoveAwakable(&waiter, &hss); |
| 718 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 728 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 719 hss.satisfied_signals); | 729 hss.satisfied_signals); |
| 720 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 730 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 721 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 731 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 722 hss.satisfiable_signals); | 732 hss.satisfiable_signals); |
| 723 | 733 |
| 724 // Read from the dispatcher. | 734 // Read from the dispatcher. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 736 ASSERT_EQ(MOJO_RESULT_OK, | 746 ASSERT_EQ(MOJO_RESULT_OK, |
| 737 local_mp->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, | 747 local_mp->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, |
| 738 false, 789, nullptr)); | 748 false, 789, nullptr)); |
| 739 | 749 |
| 740 // Write to the dispatcher. | 750 // Write to the dispatcher. |
| 741 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->WriteMessage( | 751 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->WriteMessage( |
| 742 UserPointer<const void>(kHello), sizeof(kHello), | 752 UserPointer<const void>(kHello), sizeof(kHello), |
| 743 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 753 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 744 | 754 |
| 745 // Wait. | 755 // Wait. |
| 746 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 756 EXPECT_EQ(MOJO_RESULT_OK, |
| 757 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 747 EXPECT_EQ(789u, context); | 758 EXPECT_EQ(789u, context); |
| 748 hss = HandleSignalsState(); | 759 hss = HandleSignalsState(); |
| 749 local_mp->RemoveAwakable(1, &waiter, &hss); | 760 local_mp->RemoveAwakable(1, &waiter, &hss); |
| 750 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 761 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 751 hss.satisfied_signals); | 762 hss.satisfied_signals); |
| 752 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 763 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 753 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 764 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 754 hss.satisfiable_signals); | 765 hss.satisfiable_signals); |
| 755 | 766 |
| 756 // Read from "local_mp", port 1. | 767 // Read from "local_mp", port 1. |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 845 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 856 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 846 transport.End(); | 857 transport.End(); |
| 847 | 858 |
| 848 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when | 859 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when |
| 849 // the |handle.dispatcher| is destroyed. | 860 // the |handle.dispatcher| is destroyed. |
| 850 EXPECT_TRUE(handle.dispatcher->HasOneRef()); | 861 EXPECT_TRUE(handle.dispatcher->HasOneRef()); |
| 851 handle.reset(); | 862 handle.reset(); |
| 852 } | 863 } |
| 853 | 864 |
| 854 // Wait. | 865 // Wait. |
| 855 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 866 EXPECT_EQ(MOJO_RESULT_OK, |
| 867 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 856 EXPECT_EQ(123u, context); | 868 EXPECT_EQ(123u, context); |
| 857 hss = HandleSignalsState(); | 869 hss = HandleSignalsState(); |
| 858 mp1->RemoveAwakable(1, &waiter, &hss); | 870 mp1->RemoveAwakable(1, &waiter, &hss); |
| 859 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 871 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 860 hss.satisfied_signals); | 872 hss.satisfied_signals); |
| 861 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 873 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 862 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 874 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 863 hss.satisfiable_signals); | 875 hss.satisfiable_signals); |
| 864 | 876 |
| 865 // Read from MP 1, port 1. | 877 // Read from MP 1, port 1. |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 979 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 991 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 980 transport.End(); | 992 transport.End(); |
| 981 | 993 |
| 982 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when | 994 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when |
| 983 // the |handle.dispatcher| is destroyed. | 995 // the |handle.dispatcher| is destroyed. |
| 984 EXPECT_TRUE(handle.dispatcher->HasOneRef()); | 996 EXPECT_TRUE(handle.dispatcher->HasOneRef()); |
| 985 handle.reset(); | 997 handle.reset(); |
| 986 } | 998 } |
| 987 | 999 |
| 988 // Wait. | 1000 // Wait. |
| 989 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 1001 EXPECT_EQ(MOJO_RESULT_OK, |
| 1002 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 990 EXPECT_EQ(123u, context); | 1003 EXPECT_EQ(123u, context); |
| 991 hss = HandleSignalsState(); | 1004 hss = HandleSignalsState(); |
| 992 mp1->RemoveAwakable(1, &waiter, &hss); | 1005 mp1->RemoveAwakable(1, &waiter, &hss); |
| 993 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 1006 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 994 hss.satisfied_signals); | 1007 hss.satisfied_signals); |
| 995 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 1008 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 996 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 1009 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 997 hss.satisfiable_signals); | 1010 hss.satisfiable_signals); |
| 998 | 1011 |
| 999 // Read from MP 1, port 1. | 1012 // Read from MP 1, port 1. |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1094 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 1107 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 1095 transport.End(); | 1108 transport.End(); |
| 1096 | 1109 |
| 1097 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when | 1110 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when |
| 1098 // the |handle.dispatcher| is destroyed. | 1111 // the |handle.dispatcher| is destroyed. |
| 1099 EXPECT_TRUE(handle.dispatcher->HasOneRef()); | 1112 EXPECT_TRUE(handle.dispatcher->HasOneRef()); |
| 1100 handle.reset(); | 1113 handle.reset(); |
| 1101 } | 1114 } |
| 1102 | 1115 |
| 1103 // Wait. | 1116 // Wait. |
| 1104 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 1117 EXPECT_EQ(MOJO_RESULT_OK, |
| 1118 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 1105 EXPECT_EQ(123u, context); | 1119 EXPECT_EQ(123u, context); |
| 1106 hss = HandleSignalsState(); | 1120 hss = HandleSignalsState(); |
| 1107 mp1->RemoveAwakable(1, &waiter, &hss); | 1121 mp1->RemoveAwakable(1, &waiter, &hss); |
| 1108 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 1122 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 1109 hss.satisfied_signals); | 1123 hss.satisfied_signals); |
| 1110 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 1124 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 1111 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 1125 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 1112 hss.satisfiable_signals); | 1126 hss.satisfiable_signals); |
| 1113 | 1127 |
| 1114 // Read from MP 1, port 1. | 1128 // Read from MP 1, port 1. |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1234 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 1248 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 1235 transport.End(); | 1249 transport.End(); |
| 1236 | 1250 |
| 1237 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when | 1251 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when |
| 1238 // the |handle.dispatcher| is destroyed. | 1252 // the |handle.dispatcher| is destroyed. |
| 1239 EXPECT_TRUE(handle.dispatcher->HasOneRef()); | 1253 EXPECT_TRUE(handle.dispatcher->HasOneRef()); |
| 1240 handle.reset(); | 1254 handle.reset(); |
| 1241 } | 1255 } |
| 1242 | 1256 |
| 1243 // Wait. | 1257 // Wait. |
| 1244 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 1258 EXPECT_EQ(MOJO_RESULT_OK, |
| 1259 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 1245 EXPECT_EQ(123u, context); | 1260 EXPECT_EQ(123u, context); |
| 1246 hss = HandleSignalsState(); | 1261 hss = HandleSignalsState(); |
| 1247 mp1->RemoveAwakable(1, &waiter, &hss); | 1262 mp1->RemoveAwakable(1, &waiter, &hss); |
| 1248 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 1263 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 1249 hss.satisfied_signals); | 1264 hss.satisfied_signals); |
| 1250 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 1265 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 1251 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 1266 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 1252 hss.satisfiable_signals); | 1267 hss.satisfiable_signals); |
| 1253 | 1268 |
| 1254 // Read from MP 1, port 1. | 1269 // Read from MP 1, port 1. |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1296 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 1311 &transports, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 1297 transport.End(); | 1312 transport.End(); |
| 1298 | 1313 |
| 1299 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when | 1314 // |handle.dispatcher| should have been closed. This is |DCHECK()|ed when |
| 1300 // the |handle.dispatcher| is destroyed. | 1315 // the |handle.dispatcher| is destroyed. |
| 1301 EXPECT_TRUE(handle.dispatcher->HasOneRef()); | 1316 EXPECT_TRUE(handle.dispatcher->HasOneRef()); |
| 1302 handle.reset(); | 1317 handle.reset(); |
| 1303 } | 1318 } |
| 1304 | 1319 |
| 1305 // Wait. | 1320 // Wait. |
| 1306 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 1321 EXPECT_EQ(MOJO_RESULT_OK, |
| 1322 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 1307 EXPECT_EQ(456u, context); | 1323 EXPECT_EQ(456u, context); |
| 1308 hss = HandleSignalsState(); | 1324 hss = HandleSignalsState(); |
| 1309 mp0->RemoveAwakable(0, &waiter, &hss); | 1325 mp0->RemoveAwakable(0, &waiter, &hss); |
| 1310 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 1326 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 1311 hss.satisfied_signals); | 1327 hss.satisfied_signals); |
| 1312 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 1328 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 1313 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 1329 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 1314 hss.satisfiable_signals); | 1330 hss.satisfiable_signals); |
| 1315 | 1331 |
| 1316 // Read from MP 0, port 0. | 1332 // Read from MP 0, port 0. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 1341 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 789, | 1357 dispatcher->AddAwakable(&waiter, MOJO_HANDLE_SIGNAL_READABLE, 789, |
| 1342 nullptr)); | 1358 nullptr)); |
| 1343 | 1359 |
| 1344 // Write to "local_mp", port 1. | 1360 // Write to "local_mp", port 1. |
| 1345 EXPECT_EQ( | 1361 EXPECT_EQ( |
| 1346 MOJO_RESULT_OK, | 1362 MOJO_RESULT_OK, |
| 1347 local_mp->WriteMessage(1, UserPointer<const void>(kHello), sizeof(kHello), | 1363 local_mp->WriteMessage(1, UserPointer<const void>(kHello), sizeof(kHello), |
| 1348 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 1364 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 1349 | 1365 |
| 1350 // Wait for the dispatcher to become readable. | 1366 // Wait for the dispatcher to become readable. |
| 1351 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 1367 EXPECT_EQ(MOJO_RESULT_OK, |
| 1368 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 1352 EXPECT_EQ(789u, context); | 1369 EXPECT_EQ(789u, context); |
| 1353 hss = HandleSignalsState(); | 1370 hss = HandleSignalsState(); |
| 1354 dispatcher->RemoveAwakable(&waiter, &hss); | 1371 dispatcher->RemoveAwakable(&waiter, &hss); |
| 1355 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 1372 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 1356 hss.satisfied_signals); | 1373 hss.satisfied_signals); |
| 1357 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 1374 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 1358 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 1375 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 1359 hss.satisfiable_signals); | 1376 hss.satisfiable_signals); |
| 1360 | 1377 |
| 1361 // Read from the dispatcher. | 1378 // Read from the dispatcher. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1373 ASSERT_EQ(MOJO_RESULT_OK, | 1390 ASSERT_EQ(MOJO_RESULT_OK, |
| 1374 local_mp->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, | 1391 local_mp->AddAwakable(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, |
| 1375 false, 789, nullptr)); | 1392 false, 789, nullptr)); |
| 1376 | 1393 |
| 1377 // Write to the dispatcher. | 1394 // Write to the dispatcher. |
| 1378 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->WriteMessage( | 1395 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->WriteMessage( |
| 1379 UserPointer<const void>(kHello), sizeof(kHello), | 1396 UserPointer<const void>(kHello), sizeof(kHello), |
| 1380 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 1397 nullptr, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 1381 | 1398 |
| 1382 // Wait. | 1399 // Wait. |
| 1383 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 1400 EXPECT_EQ(MOJO_RESULT_OK, |
| 1401 waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context, nullptr)); |
| 1384 EXPECT_EQ(789u, context); | 1402 EXPECT_EQ(789u, context); |
| 1385 hss = HandleSignalsState(); | 1403 hss = HandleSignalsState(); |
| 1386 local_mp->RemoveAwakable(1, &waiter, &hss); | 1404 local_mp->RemoveAwakable(1, &waiter, &hss); |
| 1387 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, | 1405 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE, |
| 1388 hss.satisfied_signals); | 1406 hss.satisfied_signals); |
| 1389 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | | 1407 EXPECT_EQ(MOJO_HANDLE_SIGNAL_READABLE | MOJO_HANDLE_SIGNAL_WRITABLE | |
| 1390 MOJO_HANDLE_SIGNAL_PEER_CLOSED, | 1408 MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| 1391 hss.satisfiable_signals); | 1409 hss.satisfiable_signals); |
| 1392 | 1410 |
| 1393 // Read from "local_mp", port 1. | 1411 // Read from "local_mp", port 1. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1407 mp0->Close(0); | 1425 mp0->Close(0); |
| 1408 mp1->Close(1); | 1426 mp1->Close(1); |
| 1409 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); | 1427 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); |
| 1410 // Note that |local_mp|'s port 0 belong to |dispatcher|, which was closed. | 1428 // Note that |local_mp|'s port 0 belong to |dispatcher|, which was closed. |
| 1411 local_mp->Close(1); | 1429 local_mp->Close(1); |
| 1412 } | 1430 } |
| 1413 | 1431 |
| 1414 } // namespace | 1432 } // namespace |
| 1415 } // namespace system | 1433 } // namespace system |
| 1416 } // namespace mojo | 1434 } // namespace mojo |
| OLD | NEW |