IPC::Message* Shmem::ShareTo(IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead, base::ProcessHandle aProcess, int32 routingId) { AssertInvariants(); if (SharedMemory::TYPE_BASIC == mSegment->Type()) { SharedMemoryBasic* seg = static_cast<SharedMemoryBasic*>(mSegment); SharedMemoryBasic::Handle handle; if (!seg->ShareToProcess(aProcess, &handle)) return 0; return new ShmemCreated(routingId, mId, mSize, handle); } #ifdef MOZ_HAVE_SHAREDMEMORYSYSV else if (SharedMemory::TYPE_SYSV == mSegment->Type()) { SharedMemorySysV* seg = static_cast<SharedMemorySysV*>(mSegment); return new ShmemCreated(routingId, mId, mSize, seg->GetHandle()); } #endif else { NS_RUNTIMEABORT("unknown shmem type (here?!)"); } return 0; }
IPC::Message* Shmem::ShareTo(IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead, base::ProcessHandle aProcess, int32_t routingId) { AssertInvariants(); // kInvalidProcessHandle is used to indicate that it's the same process. if (aProcess == kInvalidProcessHandle) { aProcess = base::GetCurrentProcessHandle(); } if (SharedMemory::TYPE_BASIC == mSegment->Type()) { SharedMemoryBasic* seg = static_cast<SharedMemoryBasic*>(mSegment); SharedMemoryBasic::Handle handle; if (!seg->ShareToProcess(aProcess, &handle)) return nullptr; return new ShmemCreated(routingId, mId, mSize, handle); } #ifdef MOZ_HAVE_SHAREDMEMORYSYSV else if (SharedMemory::TYPE_SYSV == mSegment->Type()) { SharedMemorySysV* seg = static_cast<SharedMemorySysV*>(mSegment); return new ShmemCreated(routingId, mId, mSize, seg->GetHandle()); } #endif else { MOZ_ASSERT(false, "unknown shmem type (here?!)"); return nullptr; } return nullptr; }