void TelemetryIPCAccumulator::RecordChildEvent(const mozilla::TimeStamp& timestamp, const nsACString& category, const nsACString& method, const nsACString& object, const mozilla::Maybe<nsCString>& value, const nsTArray<mozilla::Telemetry::EventExtraEntry>& extra) { StaticMutexAutoLock locker(gTelemetryIPCAccumulatorMutex); if (!gChildEvents) { gChildEvents = new nsTArray<ChildEventData>(); } if (gChildEvents->Length() >= kWaterMarkDiscardFactor * kEventsArrayHighWaterMark) { gDiscardedData.mDiscardedChildEvents++; return; } if (gChildEvents->Length() == kEventsArrayHighWaterMark) { DispatchIPCTimerFired(); } // Store the event. gChildEvents->AppendElement(ChildEventData{timestamp, nsCString(category), nsCString(method), nsCString(object), value, nsTArray<mozilla::Telemetry::EventExtraEntry>(extra)}); ArmIPCTimer(locker); }
void BluetoothGattManager::Connect(const nsAString& aAppUuid, const nsAString& aDeviceAddr, BluetoothReplyRunnable* aRunnable) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aRunnable); ENSURE_GATT_CLIENT_INTF_IS_READY_VOID(aRunnable); size_t index = sClients->IndexOf(aAppUuid, 0 /* Start */, UuidComparator()); if (index == sClients->NoIndex) { index = sClients->Length(); sClients->AppendElement(new BluetoothGattClient(aAppUuid, aDeviceAddr)); } nsRefPtr<BluetoothGattClient> client = sClients->ElementAt(index); client->mConnectRunnable = aRunnable; if (client->mClientIf > 0) { sBluetoothGattClientInterface->Connect(client->mClientIf, aDeviceAddr, true, // direct connect new ConnectResultHandler(client)); } else { BluetoothUuid uuid; StringToUuid(NS_ConvertUTF16toUTF8(aAppUuid).get(), uuid); // connect will be proceeded after client registered sBluetoothGattClientInterface->RegisterClient( uuid, new RegisterClientResultHandler(client)); } }
void TelemetryIPCAccumulator::AccumulateChildKeyedHistogram(mozilla::Telemetry::HistogramID aId, const nsCString& aKey, uint32_t aSample) { StaticMutexAutoLock locker(gTelemetryIPCAccumulatorMutex); if (!gKeyedHistogramAccumulations) { gKeyedHistogramAccumulations = new nsTArray<KeyedHistogramAccumulation>(); } if (gKeyedHistogramAccumulations->Length() >= kWaterMarkDiscardFactor * kHistogramAccumulationsArrayHighWaterMark) { gDiscardedData.mDiscardedKeyedHistogramAccumulations++; return; } if (gKeyedHistogramAccumulations->Length() == kHistogramAccumulationsArrayHighWaterMark) { DispatchIPCTimerFired(); } gKeyedHistogramAccumulations->AppendElement(KeyedHistogramAccumulation{aId, aSample, aKey}); ArmIPCTimer(locker); }
void TelemetryIPCAccumulator::RecordChildScalarAction(uint32_t aId, bool aDynamic, ScalarActionType aAction, const ScalarVariant& aValue) { StaticMutexAutoLock locker(gTelemetryIPCAccumulatorMutex); // Make sure to have the storage. if (!gChildScalarsActions) { gChildScalarsActions = new nsTArray<ScalarAction>(); } if (gChildScalarsActions->Length() >= kWaterMarkDiscardFactor * kScalarActionsArrayHighWaterMark) { gDiscardedData.mDiscardedScalarActions++; return; } if (gChildScalarsActions->Length() == kScalarActionsArrayHighWaterMark) { DispatchIPCTimerFired(); } // Store the action. gChildScalarsActions->AppendElement(ScalarAction{aId, aDynamic, aAction, Some(aValue)}); ArmIPCTimer(locker); }