| 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 <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 NULL, | 207 NULL, |
| 208 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 208 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 209 | 209 |
| 210 // Wait. | 210 // Wait. |
| 211 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 211 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); |
| 212 EXPECT_EQ(123u, context); | 212 EXPECT_EQ(123u, context); |
| 213 mp1->RemoveWaiter(1, &waiter); | 213 mp1->RemoveWaiter(1, &waiter); |
| 214 | 214 |
| 215 // Read from MP 1, port 1. | 215 // Read from MP 1, port 1. |
| 216 EXPECT_EQ(MOJO_RESULT_OK, | 216 EXPECT_EQ(MOJO_RESULT_OK, |
| 217 mp1->ReadMessage(1, | 217 mp1->ReadMessage(1, UserPointer<void>(buffer), |
| 218 buffer, &buffer_size, | 218 MakeUserPointer(&buffer_size), NULL, NULL, |
| 219 NULL, NULL, | |
| 220 MOJO_READ_MESSAGE_FLAG_NONE)); | 219 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 221 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); | 220 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); |
| 222 EXPECT_STREQ(kHello, buffer); | 221 EXPECT_STREQ(kHello, buffer); |
| 223 | 222 |
| 224 // Write in the other direction: MP 1, port 1 -> ... -> MP 0, port 0. | 223 // Write in the other direction: MP 1, port 1 -> ... -> MP 0, port 0. |
| 225 | 224 |
| 226 waiter.Init(); | 225 waiter.Init(); |
| 227 ASSERT_EQ(MOJO_RESULT_OK, | 226 ASSERT_EQ(MOJO_RESULT_OK, |
| 228 mp0->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 456)); | 227 mp0->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 456)); |
| 229 | 228 |
| 230 EXPECT_EQ(MOJO_RESULT_OK, | 229 EXPECT_EQ(MOJO_RESULT_OK, |
| 231 mp1->WriteMessage(1, | 230 mp1->WriteMessage(1, |
| 232 kWorld, sizeof(kWorld), | 231 kWorld, sizeof(kWorld), |
| 233 NULL, | 232 NULL, |
| 234 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 233 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 235 | 234 |
| 236 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 235 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); |
| 237 EXPECT_EQ(456u, context); | 236 EXPECT_EQ(456u, context); |
| 238 mp0->RemoveWaiter(0, &waiter); | 237 mp0->RemoveWaiter(0, &waiter); |
| 239 | 238 |
| 240 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 239 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 241 EXPECT_EQ(MOJO_RESULT_OK, | 240 EXPECT_EQ(MOJO_RESULT_OK, |
| 242 mp0->ReadMessage(0, | 241 mp0->ReadMessage(0, UserPointer<void>(buffer), |
| 243 buffer, &buffer_size, | 242 MakeUserPointer(&buffer_size), NULL, NULL, |
| 244 NULL, NULL, | |
| 245 MOJO_READ_MESSAGE_FLAG_NONE)); | 243 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 246 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size)); | 244 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size)); |
| 247 EXPECT_STREQ(kWorld, buffer); | 245 EXPECT_STREQ(kWorld, buffer); |
| 248 | 246 |
| 249 // Close MP 0, port 0. | 247 // Close MP 0, port 0. |
| 250 mp0->Close(0); | 248 mp0->Close(0); |
| 251 | 249 |
| 252 // Try to wait for MP 1, port 1 to become readable. This will eventually fail | 250 // Try to wait for MP 1, port 1 to become readable. This will eventually fail |
| 253 // when it realizes that MP 0, port 0 has been closed. (It may also fail | 251 // when it realizes that MP 0, port 0 has been closed. (It may also fail |
| 254 // immediately.) | 252 // immediately.) |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 NULL, | 306 NULL, |
| 309 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 307 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 310 | 308 |
| 311 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 309 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); |
| 312 EXPECT_EQ(789u, context); | 310 EXPECT_EQ(789u, context); |
| 313 mp3->RemoveWaiter(1, &waiter); | 311 mp3->RemoveWaiter(1, &waiter); |
| 314 | 312 |
| 315 // Make sure there's nothing on MP 0, port 0 or MP 1, port 1 or MP 2, port 0. | 313 // Make sure there's nothing on MP 0, port 0 or MP 1, port 1 or MP 2, port 0. |
| 316 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 314 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 317 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 315 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
| 318 mp0->ReadMessage(0, | 316 mp0->ReadMessage(0, UserPointer<void>(buffer), |
| 319 buffer, &buffer_size, | 317 MakeUserPointer(&buffer_size), NULL, NULL, |
| 320 NULL, NULL, | |
| 321 MOJO_READ_MESSAGE_FLAG_NONE)); | 318 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 322 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 319 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 323 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 320 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
| 324 mp1->ReadMessage(1, | 321 mp1->ReadMessage(1, UserPointer<void>(buffer), |
| 325 buffer, &buffer_size, | 322 MakeUserPointer(&buffer_size), NULL, NULL, |
| 326 NULL, NULL, | |
| 327 MOJO_READ_MESSAGE_FLAG_NONE)); | 323 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 328 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 324 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 329 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 325 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
| 330 mp2->ReadMessage(0, | 326 mp2->ReadMessage(0, UserPointer<void>(buffer), |
| 331 buffer, &buffer_size, | 327 MakeUserPointer(&buffer_size), NULL, NULL, |
| 332 NULL, NULL, | |
| 333 MOJO_READ_MESSAGE_FLAG_NONE)); | 328 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 334 | 329 |
| 335 // Read from MP 3, port 1. | 330 // Read from MP 3, port 1. |
| 336 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 331 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 337 EXPECT_EQ(MOJO_RESULT_OK, | 332 EXPECT_EQ(MOJO_RESULT_OK, |
| 338 mp3->ReadMessage(1, | 333 mp3->ReadMessage(1, UserPointer<void>(buffer), |
| 339 buffer, &buffer_size, | 334 MakeUserPointer(&buffer_size), NULL, NULL, |
| 340 NULL, NULL, | |
| 341 MOJO_READ_MESSAGE_FLAG_NONE)); | 335 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 342 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); | 336 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); |
| 343 EXPECT_STREQ(kHello, buffer); | 337 EXPECT_STREQ(kHello, buffer); |
| 344 | 338 |
| 345 // Write: MP 0, port 0 -> MP 1, port 1 again. | 339 // Write: MP 0, port 0 -> MP 1, port 1 again. |
| 346 | 340 |
| 347 waiter.Init(); | 341 waiter.Init(); |
| 348 ASSERT_EQ(MOJO_RESULT_OK, | 342 ASSERT_EQ(MOJO_RESULT_OK, |
| 349 mp1->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123)); | 343 mp1->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 123)); |
| 350 | 344 |
| 351 EXPECT_EQ(MOJO_RESULT_OK, | 345 EXPECT_EQ(MOJO_RESULT_OK, |
| 352 mp0->WriteMessage(0, | 346 mp0->WriteMessage(0, |
| 353 kWorld, sizeof(kWorld), | 347 kWorld, sizeof(kWorld), |
| 354 NULL, | 348 NULL, |
| 355 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 349 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 356 | 350 |
| 357 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 351 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); |
| 358 EXPECT_EQ(123u, context); | 352 EXPECT_EQ(123u, context); |
| 359 mp1->RemoveWaiter(1, &waiter); | 353 mp1->RemoveWaiter(1, &waiter); |
| 360 | 354 |
| 361 // Make sure there's nothing on the other ports. | 355 // Make sure there's nothing on the other ports. |
| 362 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 356 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 363 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 357 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
| 364 mp0->ReadMessage(0, | 358 mp0->ReadMessage(0, UserPointer<void>(buffer), |
| 365 buffer, &buffer_size, | 359 MakeUserPointer(&buffer_size), NULL, NULL, |
| 366 NULL, NULL, | |
| 367 MOJO_READ_MESSAGE_FLAG_NONE)); | 360 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 368 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 361 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 369 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 362 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
| 370 mp2->ReadMessage(0, | 363 mp2->ReadMessage(0, UserPointer<void>(buffer), |
| 371 buffer, &buffer_size, | 364 MakeUserPointer(&buffer_size), NULL, NULL, |
| 372 NULL, NULL, | |
| 373 MOJO_READ_MESSAGE_FLAG_NONE)); | 365 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 374 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 366 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 375 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, | 367 EXPECT_EQ(MOJO_RESULT_SHOULD_WAIT, |
| 376 mp3->ReadMessage(1, | 368 mp3->ReadMessage(1, UserPointer<void>(buffer), |
| 377 buffer, &buffer_size, | 369 MakeUserPointer(&buffer_size), NULL, NULL, |
| 378 NULL, NULL, | |
| 379 MOJO_READ_MESSAGE_FLAG_NONE)); | 370 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 380 | 371 |
| 381 buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 372 buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
| 382 EXPECT_EQ(MOJO_RESULT_OK, | 373 EXPECT_EQ(MOJO_RESULT_OK, |
| 383 mp1->ReadMessage(1, | 374 mp1->ReadMessage(1, UserPointer<void>(buffer), |
| 384 buffer, &buffer_size, | 375 MakeUserPointer(&buffer_size), NULL, NULL, |
| 385 NULL, NULL, | |
| 386 MOJO_READ_MESSAGE_FLAG_NONE)); | 376 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 387 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size)); | 377 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(buffer_size)); |
| 388 EXPECT_STREQ(kWorld, buffer); | 378 EXPECT_STREQ(kWorld, buffer); |
| 389 | 379 |
| 390 mp0->Close(0); | 380 mp0->Close(0); |
| 391 mp1->Close(1); | 381 mp1->Close(1); |
| 392 mp2->Close(0); | 382 mp2->Close(0); |
| 393 mp3->Close(1); | 383 mp3->Close(1); |
| 394 } | 384 } |
| 395 | 385 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 | 423 |
| 434 BootstrapMessagePipeNoWait(1, mp1); | 424 BootstrapMessagePipeNoWait(1, mp1); |
| 435 | 425 |
| 436 // Wait. | 426 // Wait. |
| 437 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 427 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); |
| 438 EXPECT_EQ(123u, context); | 428 EXPECT_EQ(123u, context); |
| 439 mp1->RemoveWaiter(1, &waiter); | 429 mp1->RemoveWaiter(1, &waiter); |
| 440 | 430 |
| 441 // Read from MP 1, port 1. | 431 // Read from MP 1, port 1. |
| 442 EXPECT_EQ(MOJO_RESULT_OK, | 432 EXPECT_EQ(MOJO_RESULT_OK, |
| 443 mp1->ReadMessage(1, | 433 mp1->ReadMessage(1, UserPointer<void>(buffer), |
| 444 buffer, &buffer_size, | 434 MakeUserPointer(&buffer_size), NULL, NULL, |
| 445 NULL, NULL, | |
| 446 MOJO_READ_MESSAGE_FLAG_NONE)); | 435 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 447 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); | 436 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(buffer_size)); |
| 448 EXPECT_STREQ(kHello, buffer); | 437 EXPECT_STREQ(kHello, buffer); |
| 449 | 438 |
| 450 // And MP 1, port 1. | 439 // And MP 1, port 1. |
| 451 mp1->Close(1); | 440 mp1->Close(1); |
| 452 } | 441 } |
| 453 | 442 |
| 454 TEST_F(RemoteMessagePipeTest, HandlePassing) { | 443 TEST_F(RemoteMessagePipeTest, HandlePassing) { |
| 455 static const char kHello[] = "hello"; | 444 static const char kHello[] = "hello"; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 488 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); |
| 500 EXPECT_EQ(123u, context); | 489 EXPECT_EQ(123u, context); |
| 501 mp1->RemoveWaiter(1, &waiter); | 490 mp1->RemoveWaiter(1, &waiter); |
| 502 | 491 |
| 503 // Read from MP 1, port 1. | 492 // Read from MP 1, port 1. |
| 504 char read_buffer[100] = { 0 }; | 493 char read_buffer[100] = { 0 }; |
| 505 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); | 494 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); |
| 506 DispatcherVector read_dispatchers; | 495 DispatcherVector read_dispatchers; |
| 507 uint32_t read_num_dispatchers = 10; // Maximum to get. | 496 uint32_t read_num_dispatchers = 10; // Maximum to get. |
| 508 EXPECT_EQ(MOJO_RESULT_OK, | 497 EXPECT_EQ(MOJO_RESULT_OK, |
| 509 mp1->ReadMessage(1, read_buffer, &read_buffer_size, | 498 mp1->ReadMessage(1, UserPointer<void>(read_buffer), |
| 499 MakeUserPointer(&read_buffer_size), |
| 510 &read_dispatchers, &read_num_dispatchers, | 500 &read_dispatchers, &read_num_dispatchers, |
| 511 MOJO_READ_MESSAGE_FLAG_NONE)); | 501 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 512 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 502 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 513 EXPECT_STREQ(kHello, read_buffer); | 503 EXPECT_STREQ(kHello, read_buffer); |
| 514 EXPECT_EQ(1u, read_dispatchers.size()); | 504 EXPECT_EQ(1u, read_dispatchers.size()); |
| 515 EXPECT_EQ(1u, read_num_dispatchers); | 505 EXPECT_EQ(1u, read_num_dispatchers); |
| 516 ASSERT_TRUE(read_dispatchers[0]); | 506 ASSERT_TRUE(read_dispatchers[0]); |
| 517 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); | 507 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); |
| 518 | 508 |
| 519 EXPECT_EQ(Dispatcher::kTypeMessagePipe, read_dispatchers[0]->GetType()); | 509 EXPECT_EQ(Dispatcher::kTypeMessagePipe, read_dispatchers[0]->GetType()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 534 | 524 |
| 535 // Wait for the dispatcher to become readable. | 525 // Wait for the dispatcher to become readable. |
| 536 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 526 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); |
| 537 EXPECT_EQ(456u, context); | 527 EXPECT_EQ(456u, context); |
| 538 dispatcher->RemoveWaiter(&waiter); | 528 dispatcher->RemoveWaiter(&waiter); |
| 539 | 529 |
| 540 // Read from the dispatcher. | 530 // Read from the dispatcher. |
| 541 memset(read_buffer, 0, sizeof(read_buffer)); | 531 memset(read_buffer, 0, sizeof(read_buffer)); |
| 542 read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); | 532 read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); |
| 543 EXPECT_EQ(MOJO_RESULT_OK, | 533 EXPECT_EQ(MOJO_RESULT_OK, |
| 544 dispatcher->ReadMessage(read_buffer, &read_buffer_size, 0, NULL, | 534 dispatcher->ReadMessage(UserPointer<void>(read_buffer), |
| 535 MakeUserPointer(&read_buffer_size), 0, NULL, |
| 545 MOJO_READ_MESSAGE_FLAG_NONE)); | 536 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 546 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 537 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 547 EXPECT_STREQ(kHello, read_buffer); | 538 EXPECT_STREQ(kHello, read_buffer); |
| 548 | 539 |
| 549 // Prepare to wait on "local_mp", port 1. | 540 // Prepare to wait on "local_mp", port 1. |
| 550 waiter.Init(); | 541 waiter.Init(); |
| 551 ASSERT_EQ(MOJO_RESULT_OK, | 542 ASSERT_EQ(MOJO_RESULT_OK, |
| 552 local_mp->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 789)); | 543 local_mp->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 789)); |
| 553 | 544 |
| 554 // Write to the dispatcher. | 545 // Write to the dispatcher. |
| 555 EXPECT_EQ(MOJO_RESULT_OK, | 546 EXPECT_EQ(MOJO_RESULT_OK, |
| 556 dispatcher->WriteMessage(kHello, sizeof(kHello), NULL, | 547 dispatcher->WriteMessage(kHello, sizeof(kHello), NULL, |
| 557 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 548 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 558 | 549 |
| 559 // Wait. | 550 // Wait. |
| 560 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 551 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); |
| 561 EXPECT_EQ(789u, context); | 552 EXPECT_EQ(789u, context); |
| 562 local_mp->RemoveWaiter(1, &waiter); | 553 local_mp->RemoveWaiter(1, &waiter); |
| 563 | 554 |
| 564 // Read from "local_mp", port 1. | 555 // Read from "local_mp", port 1. |
| 565 memset(read_buffer, 0, sizeof(read_buffer)); | 556 memset(read_buffer, 0, sizeof(read_buffer)); |
| 566 read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); | 557 read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); |
| 567 EXPECT_EQ(MOJO_RESULT_OK, | 558 EXPECT_EQ(MOJO_RESULT_OK, |
| 568 local_mp->ReadMessage(1, read_buffer, &read_buffer_size, NULL, NULL, | 559 local_mp->ReadMessage(1, UserPointer<void>(read_buffer), |
| 569 MOJO_READ_MESSAGE_FLAG_NONE)); | 560 MakeUserPointer(&read_buffer_size), NULL, |
| 561 NULL, MOJO_READ_MESSAGE_FLAG_NONE)); |
| 570 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 562 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 571 EXPECT_STREQ(kHello, read_buffer); | 563 EXPECT_STREQ(kHello, read_buffer); |
| 572 | 564 |
| 573 // TODO(vtl): Also test that messages queued up before the handle was sent are | 565 // TODO(vtl): Also test that messages queued up before the handle was sent are |
| 574 // delivered properly. | 566 // delivered properly. |
| 575 | 567 |
| 576 // Close everything that belongs to us. | 568 // Close everything that belongs to us. |
| 577 mp0->Close(0); | 569 mp0->Close(0); |
| 578 mp1->Close(1); | 570 mp1->Close(1); |
| 579 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); | 571 EXPECT_EQ(MOJO_RESULT_OK, dispatcher->Close()); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 641 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); |
| 650 EXPECT_EQ(123u, context); | 642 EXPECT_EQ(123u, context); |
| 651 mp1->RemoveWaiter(1, &waiter); | 643 mp1->RemoveWaiter(1, &waiter); |
| 652 | 644 |
| 653 // Read from MP 1, port 1. | 645 // Read from MP 1, port 1. |
| 654 char read_buffer[100] = { 0 }; | 646 char read_buffer[100] = { 0 }; |
| 655 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); | 647 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); |
| 656 DispatcherVector read_dispatchers; | 648 DispatcherVector read_dispatchers; |
| 657 uint32_t read_num_dispatchers = 10; // Maximum to get. | 649 uint32_t read_num_dispatchers = 10; // Maximum to get. |
| 658 EXPECT_EQ(MOJO_RESULT_OK, | 650 EXPECT_EQ(MOJO_RESULT_OK, |
| 659 mp1->ReadMessage(1, read_buffer, &read_buffer_size, | 651 mp1->ReadMessage(1, UserPointer<void>(read_buffer), |
| 652 MakeUserPointer(&read_buffer_size), |
| 660 &read_dispatchers, &read_num_dispatchers, | 653 &read_dispatchers, &read_num_dispatchers, |
| 661 MOJO_READ_MESSAGE_FLAG_NONE)); | 654 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 662 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); | 655 EXPECT_EQ(sizeof(kHello), static_cast<size_t>(read_buffer_size)); |
| 663 EXPECT_STREQ(kHello, read_buffer); | 656 EXPECT_STREQ(kHello, read_buffer); |
| 664 EXPECT_EQ(1u, read_dispatchers.size()); | 657 EXPECT_EQ(1u, read_dispatchers.size()); |
| 665 EXPECT_EQ(1u, read_num_dispatchers); | 658 EXPECT_EQ(1u, read_num_dispatchers); |
| 666 ASSERT_TRUE(read_dispatchers[0]); | 659 ASSERT_TRUE(read_dispatchers[0]); |
| 667 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); | 660 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); |
| 668 | 661 |
| 669 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, read_dispatchers[0]->GetType()); | 662 EXPECT_EQ(Dispatcher::kTypeSharedBuffer, read_dispatchers[0]->GetType()); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); | 757 EXPECT_EQ(MOJO_RESULT_OK, waiter.Wait(MOJO_DEADLINE_INDEFINITE, &context)); |
| 765 EXPECT_EQ(123u, context); | 758 EXPECT_EQ(123u, context); |
| 766 mp1->RemoveWaiter(1, &waiter); | 759 mp1->RemoveWaiter(1, &waiter); |
| 767 | 760 |
| 768 // Read from MP 1, port 1. | 761 // Read from MP 1, port 1. |
| 769 char read_buffer[100] = { 0 }; | 762 char read_buffer[100] = { 0 }; |
| 770 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); | 763 uint32_t read_buffer_size = static_cast<uint32_t>(sizeof(read_buffer)); |
| 771 DispatcherVector read_dispatchers; | 764 DispatcherVector read_dispatchers; |
| 772 uint32_t read_num_dispatchers = 10; // Maximum to get. | 765 uint32_t read_num_dispatchers = 10; // Maximum to get. |
| 773 EXPECT_EQ(MOJO_RESULT_OK, | 766 EXPECT_EQ(MOJO_RESULT_OK, |
| 774 mp1->ReadMessage(1, read_buffer, &read_buffer_size, | 767 mp1->ReadMessage(1, UserPointer<void>(read_buffer), |
| 768 MakeUserPointer(&read_buffer_size), |
| 775 &read_dispatchers, &read_num_dispatchers, | 769 &read_dispatchers, &read_num_dispatchers, |
| 776 MOJO_READ_MESSAGE_FLAG_NONE)); | 770 MOJO_READ_MESSAGE_FLAG_NONE)); |
| 777 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); | 771 EXPECT_EQ(sizeof(kWorld), static_cast<size_t>(read_buffer_size)); |
| 778 EXPECT_STREQ(kWorld, read_buffer); | 772 EXPECT_STREQ(kWorld, read_buffer); |
| 779 EXPECT_EQ(1u, read_dispatchers.size()); | 773 EXPECT_EQ(1u, read_dispatchers.size()); |
| 780 EXPECT_EQ(1u, read_num_dispatchers); | 774 EXPECT_EQ(1u, read_num_dispatchers); |
| 781 ASSERT_TRUE(read_dispatchers[0]); | 775 ASSERT_TRUE(read_dispatchers[0]); |
| 782 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); | 776 EXPECT_TRUE(read_dispatchers[0]->HasOneRef()); |
| 783 | 777 |
| 784 EXPECT_EQ(Dispatcher::kTypePlatformHandle, read_dispatchers[0]->GetType()); | 778 EXPECT_EQ(Dispatcher::kTypePlatformHandle, read_dispatchers[0]->GetType()); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 841 | 835 |
| 842 mp1->Close(1); | 836 mp1->Close(1); |
| 843 | 837 |
| 844 RestoreInitialState(); | 838 RestoreInitialState(); |
| 845 } | 839 } |
| 846 } | 840 } |
| 847 | 841 |
| 848 } // namespace | 842 } // namespace |
| 849 } // namespace system | 843 } // namespace system |
| 850 } // namespace mojo | 844 } // namespace mojo |
| OLD | NEW |