void BluetoothService::UnregisterBluetoothSignalHandler( const nsAString& aNodeName, BluetoothSignalObserver* aHandler) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aHandler); BT_LOG("[S] %s: %s", __FUNCTION__, NS_ConvertUTF16toUTF8(aNodeName).get()); BluetoothSignalObserverList* ol; if (mBluetoothSignalObserverTable.Get(aNodeName, &ol)) { ol->RemoveObserver(aHandler); // We shouldn't have duplicate instances in the ObserverList, but there's // no appropriate way to do duplication check while registering, so // assertions are added here. MOZ_ASSERT(!ol->RemoveObserver(aHandler)); if (ol->Length() == 0) { mBluetoothSignalObserverTable.Remove(aNodeName); } } else { NS_WARNING("Node was never registered!"); } }
void BluetoothService::DistributeSignal(const BluetoothSignal& aSignal) { MOZ_ASSERT(NS_IsMainThread()); if (aSignal.path().EqualsLiteral(KEY_LOCAL_AGENT)) { Notify(aSignal); return; } else if (aSignal.path().EqualsLiteral(KEY_REMOTE_AGENT)) { Notify(aSignal); return; } BluetoothSignalObserverList* ol; if (!mBluetoothSignalObserverTable.Get(aSignal.path(), &ol)) { #if DEBUG nsAutoCString msg("No observer registered for path "); msg.Append(NS_ConvertUTF16toUTF8(aSignal.path())); NS_WARNING(msg.get()); #endif return; } MOZ_ASSERT(ol->Length()); ol->Broadcast(aSignal); }
void BluetoothService::DistributeSignal(const BluetoothSignal& aSignal) { MOZ_ASSERT(NS_IsMainThread()); BluetoothSignalObserverList* ol; if (!mBluetoothSignalObserverTable.Get(aSignal.path(), &ol)) { // If there is no BluetoohPairingListener in observer table, put the signal // into a pending queue of pairing requests and send a system message to // launch bluetooth certified app. if (aSignal.path().EqualsLiteral(KEY_PAIRING_LISTENER)) { mPendingPairReqSignals.AppendElement(aSignal); BT_ENSURE_TRUE_VOID_BROADCAST_SYSMSG( NS_LITERAL_STRING(SYS_MSG_BT_PAIRING_REQ), BluetoothValue(EmptyString())); } else { BT_WARNING("No observer registered for path %s", NS_ConvertUTF16toUTF8(aSignal.path()).get()); } return; } MOZ_ASSERT(ol->Length()); ol->Broadcast(aSignal); }
nsresult BluetoothService::UnregisterBluetoothSignalHandler(const nsAString& aNodeName, BluetoothSignalObserver* aHandler) { MOZ_ASSERT(NS_IsMainThread()); BluetoothSignalObserverList* ol; if (!mBluetoothSignalObserverTable.Get(aNodeName, &ol)) { NS_WARNING("Node does not exist to remove BluetoothSignalListener from!"); return NS_OK; } ol->RemoveObserver(aHandler); if (ol->Length() == 0) { mBluetoothSignalObserverTable.Remove(aNodeName); } return NS_OK; }
void BluetoothService::DistributeSignal(const BluetoothSignal& aSignal) { MOZ_ASSERT(NS_IsMainThread()); // Notify observers that a message has been sent BluetoothSignalObserverList* ol; if (!mBluetoothSignalObserverTable.Get(aSignal.path(), &ol)) { #if DEBUG nsAutoCString msg("No observer registered for path "); msg.Append(NS_ConvertUTF16toUTF8(aSignal.path())); NS_WARNING(msg.get()); #endif return; } MOZ_ASSERT(ol->Length()); ol->Broadcast(aSignal); }
void BluetoothService::UnregisterBluetoothSignalHandler(const nsAString& aNodeName, BluetoothSignalObserver* aHandler) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aHandler); BluetoothSignalObserverList* ol; if (mBluetoothSignalObserverTable.Get(aNodeName, &ol)) { ol->RemoveObserver(aHandler); if (ol->Length() == 0) { mBluetoothSignalObserverTable.Remove(aNodeName); } } else { NS_WARNING("Node was never registered!"); } }
nsresult BluetoothService::DistributeSignal(const BluetoothSignal& signal) { MOZ_ASSERT(NS_IsMainThread()); // Notify observers that a message has been sent BluetoothSignalObserverList* ol; if (!mBluetoothSignalObserverTable.Get(signal.path(), &ol)) { #if DEBUG nsString msg; msg.AssignLiteral("No observer registered for path"); msg.Append(signal.path()); NS_WARNING(NS_ConvertUTF16toUTF8(msg).get()); #endif return NS_OK; } #if DEBUG if (ol->Length() == 0) { NS_WARNING("Distributing to observer list of 0"); } #endif ol->Broadcast(signal); return NS_OK; }