void UnixSocketConsumerIO::OnAccepted(int aFd, const sockaddr_any* aAddr, socklen_t aAddrLen) { MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop()); MOZ_ASSERT(GetConnectionStatus() == SOCKET_IS_LISTENING); MOZ_ASSERT(aAddr); MOZ_ASSERT(aAddrLen <= sizeof(mAddr)); memcpy (&mAddr, aAddr, aAddrLen); mAddrSize = aAddrLen; if (!mConnector->SetUp(aFd)) { NS_WARNING("Could not set up socket!"); return; } RemoveWatchers(READ_WATCHER|WRITE_WATCHER); Close(); if (!SetSocketFlags(aFd)) { return; } SetSocket(aFd, SOCKET_IS_CONNECTED); nsRefPtr<nsRunnable> r = new SocketIOEventRunnable<UnixSocketConsumerIO>( this, SocketIOEventRunnable<UnixSocketConsumerIO>::CONNECT_SUCCESS); NS_DispatchToMainThread(r); AddWatchers(READ_WATCHER, true); if (HasPendingData()) { AddWatchers(WRITE_WATCHER, false); } }
void UnixSocketConsumerIO::OnConnected() { MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop()); MOZ_ASSERT(GetConnectionStatus() == SOCKET_IS_CONNECTED); if (!SetSocketFlags(GetFd())) { NS_WARNING("Cannot set socket flags!"); FireSocketError(); return; } if (!mConnector->SetUp(GetFd())) { NS_WARNING("Could not set up socket!"); FireSocketError(); return; } nsRefPtr<nsRunnable> r = new SocketIOEventRunnable<UnixSocketConsumerIO>( this, SocketIOEventRunnable<UnixSocketConsumerIO>::CONNECT_SUCCESS); NS_DispatchToMainThread(r); AddWatchers(READ_WATCHER, true); if (HasPendingData()) { AddWatchers(WRITE_WATCHER, false); } }
void ConnectionOrientedSocketIO::OnConnected() { MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop()); MOZ_ASSERT(GetConnectionStatus() == SOCKET_IS_CONNECTED); GetConsumerThread()->PostTask( MakeAndAddRef<SocketEventTask>(this, SocketEventTask::CONNECT_SUCCESS)); AddWatchers(READ_WATCHER, true); if (HasPendingData()) { AddWatchers(WRITE_WATCHER, false); } }
void BluetoothDaemonConnectionIO::OnConnected() { MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop()); MOZ_ASSERT(GetConnectionStatus() == SOCKET_IS_CONNECTED); NS_DispatchToMainThread( new SocketIOEventRunnable(this, SocketIOEventRunnable::CONNECT_SUCCESS)); AddWatchers(READ_WATCHER, true); if (HasPendingData()) { AddWatchers(WRITE_WATCHER, false); } }
void ConnectionOrientedSocketIO::Send(UnixSocketIOBuffer* aBuffer) { MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop()); EnqueueData(aBuffer); AddWatchers(WRITE_WATCHER, false); }
void BluetoothDaemonConnectionIO::Send(UnixSocketIOBuffer* aBuffer) { MOZ_ASSERT(aBuffer); EnqueueData(aBuffer); AddWatchers(WRITE_WATCHER, false); }
void BluetoothDaemonConnectionIO::Send(BluetoothDaemonPDU* aPDU) { MOZ_ASSERT(mConsumer); MOZ_ASSERT(aPDU); mConsumer->StoreUserData(*aPDU); // Store user data for reply EnqueueData(aPDU); AddWatchers(WRITE_WATCHER, false); }
void ListenSocketIO::OnListening() { MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop()); MOZ_ASSERT(GetConnectionStatus() == SOCKET_IS_LISTENING); AddWatchers(READ_WATCHER, true); /* We signal a successful 'connection' to a local address for listening. */ GetConsumerThread()->PostTask( FROM_HERE, new SocketEventTask(this, SocketEventTask::CONNECT_SUCCESS)); }
void ListenSocketIO::OnListening() { MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop()); MOZ_ASSERT(GetConnectionStatus() == SOCKET_IS_LISTENING); AddWatchers(READ_WATCHER, true); /* We signal a successful 'connection' to a local address for listening. */ NS_DispatchToMainThread( new SocketIOEventRunnable(this, SocketIOEventRunnable::CONNECT_SUCCESS)); }
void UnixSocketConsumerIO::OnListening() { MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop()); MOZ_ASSERT(GetConnectionStatus() == SOCKET_IS_LISTENING); if (!mConnector->SetUpListenSocket(GetFd())) { NS_WARNING("Could not set up listen socket!"); FireSocketError(); return; } AddWatchers(READ_WATCHER, true); }
void UnixSocketConsumerIO::OnSocketCanSendWithoutBlocking() { MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop()); MOZ_ASSERT(GetConnectionStatus() == SOCKET_IS_CONNECTED); // see bug 990984 nsresult rv = SendPendingData(GetFd(), this); if (NS_FAILED(rv)) { return; } if (HasPendingData()) { AddWatchers(WRITE_WATCHER, false); } }
nsresult UnixSocketWatcher::Connect(const struct sockaddr* aAddr, socklen_t aAddrLen) { MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop()); MOZ_ASSERT(IsOpen()); MOZ_ASSERT(aAddr || !aAddrLen); if (connect(GetFd(), aAddr, aAddrLen) < 0) { if (errno == EINPROGRESS) { mConnectionStatus = SOCKET_IS_CONNECTING; // Set up a write watch to receive the connect signal AddWatchers(WRITE_WATCHER, false); } else { OnError("connect", errno); } return NS_ERROR_FAILURE; } mConnectionStatus = SOCKET_IS_CONNECTED; OnConnected(); return NS_OK; }
void UnixSocketConsumerIO::Send(UnixSocketRawData* aData) { EnqueueData(aData); AddWatchers(WRITE_WATCHER, false); }