void DaemonSocket::Close() { if (!mIO) { CHROMIUM_LOG("HAL daemon already disconnected!"); return; } MOZ_ASSERT(mIO->IsConsumerThread()); mIO->ShutdownOnConsumerThread(); mIO->GetIOLoop()->PostTask(FROM_HERE, new SocketIOShutdownTask(mIO)); mIO = nullptr; NotifyDisconnect(); }
void BluetoothDaemonConnection::CloseSocket() { MOZ_ASSERT(NS_IsMainThread()); if (!mIO) { CHROMIUM_LOG("Bluetooth daemon already disconnected!"); return; } XRE_GetIOMessageLoop()->PostTask(FROM_HERE, new SocketIOShutdownTask(mIO)); mIO = nullptr; NotifyDisconnect(); }
void RilSocket::Close() { MOZ_ASSERT(mIO); MOZ_ASSERT(mIO->IsConsumerThread()); mIO->CancelDelayedConnectTask(); // From this point on, we consider |mIO| as being deleted. We sever // the relationship here so any future calls to |Connect| will create // a new I/O object. mIO->ShutdownOnConsumerThread(); mIO->GetIOLoop()->PostTask(FROM_HERE, new SocketIOShutdownTask(mIO)); mIO = nullptr; NotifyDisconnect(); }
void ListenSocket::Close() { if (!mIO) { return; } MOZ_ASSERT(mIO->IsConsumerThread()); // From this point on, we consider mIO as being deleted. We sever // the relationship here so any future calls to listen or connect // will create a new implementation. mIO->ShutdownOnConsumerThread(); mIO->GetIOLoop()->PostTask(FROM_HERE, new SocketIOShutdownTask(mIO)); mIO = nullptr; NotifyDisconnect(); }
void UnixSocketConsumer::CloseSocket() { MOZ_ASSERT(NS_IsMainThread()); if (!mImpl) { return; } // From this point on, we consider mImpl as being deleted. // We sever the relationship here so any future calls to listen or connect // will create a new implementation. mImpl->ShutdownOnMainThread(); XRE_GetIOMessageLoop()->PostTask(FROM_HERE, new ShutdownSocketTask(mImpl)); mImpl = nullptr; NotifyDisconnect(); }
void UnixSocketConsumer::CloseSocket() { // Needed due to refcount change MOZ_ASSERT(NS_IsMainThread()); if (!mImpl) { return; } UnixSocketImpl* impl = mImpl; // To make sure the owner doesn't die on the IOThread, remove pointer here mImpl = nullptr; // Line it up to be destructed on the IO Thread impl->mConsumer.forget(); impl->StopTask(); XRE_GetIOMessageLoop()->PostTask(FROM_HERE, NewRunnableFunction(DestroyImpl, impl)); NotifyDisconnect(); }