// - writing a message to a port, closing the other (would be the source) port,
// and reading it
TEST(MessagePipeTest, Basic) {
- scoped_refptr<MessagePipe> mp(new MessagePipe());
+ scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalLocal());
int32_t buffer[2];
const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer));
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
EXPECT_EQ(kBufferSize, buffer_size);
EXPECT_EQ(123, buffer[0]);
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
// Write from port 1 (to port 0).
mp->WriteMessage(1,
UserPointer<const void>(buffer),
static_cast<uint32_t>(sizeof(buffer[0])),
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
// Read from port 0.
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
EXPECT_EQ(789012345, buffer[0]);
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
// Write two messages from port 0 (to port 1).
mp->WriteMessage(0,
UserPointer<const void>(buffer),
static_cast<uint32_t>(sizeof(buffer[0])),
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
buffer[0] = 234567890;
buffer[1] = 0;
mp->WriteMessage(0,
UserPointer<const void>(buffer),
static_cast<uint32_t>(sizeof(buffer[0])),
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
// Read from port 1 with buffer size 0 (should get the size of next message).
NullUserPointer(),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
EXPECT_EQ(123, buffer[0]);
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
EXPECT_EQ(123456789, buffer[0]);
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
EXPECT_EQ(234567890, buffer[0]);
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
// Write from port 0 (to port 1).
mp->WriteMessage(0,
UserPointer<const void>(buffer),
static_cast<uint32_t>(sizeof(buffer[0])),
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
// Close port 0.
mp->WriteMessage(1,
UserPointer<const void>(buffer),
static_cast<uint32_t>(sizeof(buffer[0])),
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
// Read from port 1; should still get message (even though port 0 was closed).
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
EXPECT_EQ(345678901, buffer[0]);
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
mp->Close(1);
}
TEST(MessagePipeTest, CloseWithQueuedIncomingMessages) {
- scoped_refptr<MessagePipe> mp(new MessagePipe());
+ scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalLocal());
int32_t buffer[1];
const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer));
mp->WriteMessage(1,
UserPointer<const void>(buffer),
kBufferSize,
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
}
NullUserPointer(),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
EXPECT_EQ(kBufferSize, buffer_size);
}
TEST(MessagePipeTest, DiscardMode) {
- scoped_refptr<MessagePipe> mp(new MessagePipe());
+ scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalLocal());
int32_t buffer[2];
const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer));
mp->WriteMessage(1,
UserPointer<const void>(buffer),
static_cast<uint32_t>(sizeof(buffer[0])),
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
// Read/discard from port 0 (no buffer); get size.
NullUserPointer(),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
// Write from port 1 (to port 0).
mp->WriteMessage(1,
UserPointer<const void>(buffer),
static_cast<uint32_t>(sizeof(buffer[0])),
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
// Read from port 0 (buffer big enough).
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
EXPECT_EQ(890123456, buffer[0]);
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
// Write from port 1 (to port 0).
mp->WriteMessage(1,
UserPointer<const void>(buffer),
static_cast<uint32_t>(sizeof(buffer[0])),
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
// Read/discard from port 0 (buffer too small); get size.
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
EXPECT_EQ(static_cast<uint32_t>(sizeof(buffer[0])), buffer_size);
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
// Write from port 1 (to port 0).
mp->WriteMessage(1,
UserPointer<const void>(buffer),
static_cast<uint32_t>(sizeof(buffer[0])),
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
// Discard from port 0.
NullUserPointer(),
NullUserPointer(),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
// Read again from port 0 -- it should be empty.
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_MAY_DISCARD));
mp->Close(0);
}
TEST(MessagePipeTest, BasicWaiting) {
- scoped_refptr<MessagePipe> mp(new MessagePipe());
+ scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalLocal());
Waiter waiter;
HandleSignalsState hss;
// Not yet readable.
waiter.Init();
ASSERT_EQ(MOJO_RESULT_OK,
- mp->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 1, NULL));
- EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, waiter.Wait(0, NULL));
+ mp->AddWaiter(0, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 1, nullptr));
+ EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, waiter.Wait(0, nullptr));
hss = HandleSignalsState();
mp->RemoveWaiter(0, &waiter, &hss);
EXPECT_EQ(MOJO_HANDLE_SIGNAL_WRITABLE, hss.satisfied_signals);
mp->WriteMessage(0,
UserPointer<const void>(buffer),
kBufferSize,
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
// Port 1 should already be readable now.
UserPointer<void>(buffer),
MakeUserPointer(&buffer_size),
0,
- NULL,
+ nullptr,
MOJO_READ_MESSAGE_FLAG_NONE));
EXPECT_EQ(123456789, buffer[0]);
waiter.Init();
hss = HandleSignalsState();
EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
- mp->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 6, NULL));
+ mp->AddWaiter(1, &waiter, MOJO_HANDLE_SIGNAL_READABLE, 6, nullptr));
EXPECT_EQ(0u, hss.satisfied_signals);
EXPECT_EQ(0u, hss.satisfiable_signals);
// Write to wake up waiter waiting for read.
{
- scoped_refptr<MessagePipe> mp(new MessagePipe());
+ scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalLocal());
test::SimpleWaiterThread thread(&result, &context);
thread.waiter()->Init();
ASSERT_EQ(MOJO_RESULT_OK,
mp->AddWaiter(
- 1, thread.waiter(), MOJO_HANDLE_SIGNAL_READABLE, 1, NULL));
+ 1, thread.waiter(), MOJO_HANDLE_SIGNAL_READABLE, 1, nullptr));
thread.Start();
buffer[0] = 123456789;
mp->WriteMessage(0,
UserPointer<const void>(buffer),
kBufferSize,
- NULL,
+ nullptr,
MOJO_WRITE_MESSAGE_FLAG_NONE));
HandleSignalsState hss;
// Close to cancel waiter.
{
- scoped_refptr<MessagePipe> mp(new MessagePipe());
+ scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalLocal());
test::SimpleWaiterThread thread(&result, &context);
thread.waiter()->Init();
ASSERT_EQ(MOJO_RESULT_OK,
mp->AddWaiter(
- 1, thread.waiter(), MOJO_HANDLE_SIGNAL_READABLE, 2, NULL));
+ 1, thread.waiter(), MOJO_HANDLE_SIGNAL_READABLE, 2, nullptr));
thread.Start();
// Close port 1 first -- this should result in the waiter being cancelled.
// Close to make waiter un-wake-up-able.
{
- scoped_refptr<MessagePipe> mp(new MessagePipe());
+ scoped_refptr<MessagePipe> mp(MessagePipe::CreateLocalLocal());
test::SimpleWaiterThread thread(&result, &context);
thread.waiter()->Init();
ASSERT_EQ(MOJO_RESULT_OK,
mp->AddWaiter(
- 1, thread.waiter(), MOJO_HANDLE_SIGNAL_READABLE, 3, NULL));
+ 1, thread.waiter(), MOJO_HANDLE_SIGNAL_READABLE, 3, nullptr));
thread.Start();
// Close port 0 first -- this should wake the waiter up, since port 1 will