mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */
 | 
						|
/* This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
						|
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | 
						|
 | 
						|
#ifndef TelemetryScalar_h__
 | 
						|
#define TelemetryScalar_h__
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
#include "mozilla/TelemetryProcessEnums.h"
 | 
						|
#include "mozilla/TelemetryScalarEnums.h"
 | 
						|
#include "nsTArray.h"
 | 
						|
#include "TelemetryCommon.h"
 | 
						|
 | 
						|
// This module is internal to Telemetry. It encapsulates Telemetry's
 | 
						|
// scalar accumulation and storage logic. It should only be used by
 | 
						|
// Telemetry.cpp. These functions should not be used anywhere else.
 | 
						|
// For the public interface to Telemetry functionality, see Telemetry.h.
 | 
						|
 | 
						|
namespace mozilla {
 | 
						|
namespace Telemetry {
 | 
						|
struct ScalarAction;
 | 
						|
struct KeyedScalarAction;
 | 
						|
struct DiscardedData;
 | 
						|
struct DynamicScalarDefinition;
 | 
						|
}  // namespace Telemetry
 | 
						|
}  // namespace mozilla
 | 
						|
 | 
						|
namespace TelemetryScalar {
 | 
						|
 | 
						|
void InitializeGlobalState(bool canRecordBase, bool canRecordExtended);
 | 
						|
void DeInitializeGlobalState();
 | 
						|
 | 
						|
void SetCanRecordBase(bool b);
 | 
						|
void SetCanRecordExtended(bool b);
 | 
						|
 | 
						|
// JS API Endpoints.
 | 
						|
nsresult CreateSnapshots(unsigned int aDataset, bool aClearScalars,
 | 
						|
                         JSContext* aCx, uint8_t optional_argc,
 | 
						|
                         JS::MutableHandle<JS::Value> aResult, bool aFilterTest,
 | 
						|
                         const nsACString& aStoreName);
 | 
						|
 | 
						|
// Keyed JS API Endpoints.
 | 
						|
nsresult CreateKeyedSnapshots(unsigned int aDataset, bool aClearScalars,
 | 
						|
                              JSContext* aCx, uint8_t optional_argc,
 | 
						|
                              JS::MutableHandle<JS::Value> aResult,
 | 
						|
                              bool aFilterTest, const nsACString& aStoreName);
 | 
						|
 | 
						|
// C++ API Endpoints.
 | 
						|
void Add(mozilla::Telemetry::ScalarID aId, uint32_t aValue);
 | 
						|
void Set(mozilla::Telemetry::ScalarID aId, uint32_t aValue);
 | 
						|
void Set(mozilla::Telemetry::ScalarID aId, const nsAString& aValue);
 | 
						|
void Set(mozilla::Telemetry::ScalarID aId, bool aValue);
 | 
						|
 | 
						|
// Keyed C++ API Endpoints.
 | 
						|
void Add(mozilla::Telemetry::ScalarID aId, const nsAString& aKey,
 | 
						|
         uint32_t aValue);
 | 
						|
void Set(mozilla::Telemetry::ScalarID aId, const nsAString& aKey,
 | 
						|
         uint32_t aValue);
 | 
						|
void Set(mozilla::Telemetry::ScalarID aId, const nsAString& aKey, bool aValue);
 | 
						|
 | 
						|
nsresult RegisterScalars(const nsACString& aCategoryName,
 | 
						|
                         JS::Handle<JS::Value> aScalarData, JSContext* cx);
 | 
						|
 | 
						|
// Event Summary
 | 
						|
void SummarizeEvent(const nsCString& aUniqueEventName,
 | 
						|
                    mozilla::Telemetry::ProcessID aProcessType);
 | 
						|
 | 
						|
// Only to be used for testing.
 | 
						|
void ClearScalars();
 | 
						|
 | 
						|
size_t GetMapShallowSizesOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf);
 | 
						|
size_t GetScalarSizesOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf);
 | 
						|
 | 
						|
void UpdateChildData(
 | 
						|
    mozilla::Telemetry::ProcessID aProcessType,
 | 
						|
    const nsTArray<mozilla::Telemetry::ScalarAction>& aScalarActions);
 | 
						|
 | 
						|
void UpdateChildKeyedData(
 | 
						|
    mozilla::Telemetry::ProcessID aProcessType,
 | 
						|
    const nsTArray<mozilla::Telemetry::KeyedScalarAction>& aScalarActions);
 | 
						|
 | 
						|
void RecordDiscardedData(
 | 
						|
    mozilla::Telemetry::ProcessID aProcessType,
 | 
						|
    const mozilla::Telemetry::DiscardedData& aDiscardedData);
 | 
						|
 | 
						|
void GetDynamicScalarDefinitions(
 | 
						|
    nsTArray<mozilla::Telemetry::DynamicScalarDefinition>&);
 | 
						|
void AddDynamicScalarDefinitions(
 | 
						|
    const nsTArray<mozilla::Telemetry::DynamicScalarDefinition>&);
 | 
						|
 | 
						|
/**
 | 
						|
 * Append the list of registered stores to the given set.
 | 
						|
 * This includes dynamic stores.
 | 
						|
 */
 | 
						|
nsresult GetAllStores(mozilla::Telemetry::Common::StringHashSet& set);
 | 
						|
}  // namespace TelemetryScalar
 | 
						|
 | 
						|
#endif  // TelemetryScalar_h__
 |