* Conditionally disable network detector at runtime
* Pass full configuration struct to PAL
* Add trace override options
* Check for empty ILogConfiguration entry for string
Delete AllowLargeEvents from Logger API surface
Expose bool flags on LogConfiguration
- CFG_BOOL_UTC_ENABLED -> UTC mode is enabled on SDK
- CFG_BOOL_UTC_ACTIVE -> SDK is running on UTC mode
- CFG_BOOL_UTC_LARGE_PAYLOADS -> UTC allows large payloads on windows version
Related work items: #1782870
This PR previews the following change to the Aria SDK:
- Enable a Producer control its own opt-in.
Events fired under the Microsoft Partners Telemetry group (MSPG) are not bound to OS opt-in policies. By permitting the Producer to set its provider group Id, a producer may set its provider group Id to that of MSPG (which UTC maps to a corresponding provider group) and hence control its opt-in.
- Additionally, the addition of new DDV metadata fields on a per-event basis are demonstrated in the sample app included. Discussions on how best to do this are welcome.
Related work items: #1699002
* Keep reference to ILogConfiguration rather than doing deep-copy.
* If stats timer has already scheduled, re-check the timer again when it's the time to send.
* Adjust the tests to account for the fact that RuntimeConfig object now requires a ref to ILogConfiguration.
* Remove dynamic_cast
* Re-enable stats acquiring common Part A props (device id,etc.) but not the custom Part C contexts
* Make sure the ILogger detached from parent LogManager context can still acquire common Part A props
Related work items: #1696789
Reducing / disabling non-essential features and setting various build flags to optimize for small size.
x5 times size reduction.
Functional changes to common core SDK:
* Had to rename IStorage to IDataStorage, as IStorage is a macro defined in Windows SDK.
* Had to refactor user analytics feature storage (SDK UUID / install id) to utilize plain text file rather than FIFO ..
FIFO storage is a legacy structure, bloatware, had to be deprecated and removed going forward anyways.
It wasn't even present in v1 Aria SDK, but somehow slipped thru into v3..
Features excluded from lightweight SDK:
* JSON
* ZLIB
* ECS client
* SQLite DB (only ram queue, no offline storage)
* Transmit Profiles
Related work items: #1550785
Stats improvement:
* reduce priority from Critical/Realtime to normal
* reduce frequency to 1 event in 30 minutes
* reduce stats event size. Stop collecting histograms we never ever look at (and in fact block in our Kusto storage)
* rework the code to make it simple, avoid "copypasta" that previously plagued MetaStats.cpp
* use wall clock for stats event timestamp
* adjust tests to account for lesser number of stats event per session
* make per-tenant stats a configurable "debug only" feature, as it does not scale well for deployment in Office
* adjust PAL to properly return monotonic clock
Related work items: #1618463
What's done:
* Cleaned-up all clang compiler warnings during library build
* PAL Device ID GUID
* PAL appId
Further TODO:
* BVT for Mac
* Verify all header-only APIs for warnings
* Guidance on custom HTTP provider - Edge team should handle this
* Possibly use our own sqlite3 instead of OS, as very old OS X dyn sqlite3 might be too old
Related work items: #1470816
Fixes:
* implement HTTP stack passing of request body to callback for DDV tool
* add Microsoft googletest nupkg to enable visualization of test results in Visual Studio
* fix stats and stats session IDs
* MS Edge: fix telemetry not working if RO context is already inited
* Fix SetType API not working that breaks ODIN annotation processor
* BVT test fixes
Related work items: #1403111, #1403119, #1459042
- implementation of Flush method - to move records from in-ram sqlite to on-disk sqlite db
- ability to forward debug callbacks to outside shim (needed for templated LogManager impl). No API changes, but internal impl!
- DebugSource.cpp : forward events to outside shim located at LogManager impl templated surface
- RuntimeConfig_Default.hpp : no longer need to set the path here, as it's done in LogManagerImpl
- ESCConfigCache.cpp : format changes and moved GetAppLocalTempDirectory to MAT as common cross-plat routine
- HttpResponseDecoder.cpp : temporary debug-only change to catch references to deallocated ptrs and assert on that
- IOfflineStorage.hpp : add Flush method (move ram to disk) and a callback for records saved to disk
- DebugEvents.hpp : proxy-forward callbacks to another "cascaded" listener
- ILogManager.hpp : AttachEventSource / DetachEventSource - attach "cascaded" proxy source (as there could be many templ ref to one instance)
- LogManagerBase.hpp : save primary tenant token back to configuration and attach "local" Debug event source proxy on a template
- NullObjects.hpp : add stubs to NULL-object pattern implementation
- Variant.hpp / VariantType.hpp : add draft implementation of thread-safe variants and fix vs201x memory corruption in destructor
- ISqlite3Proxy.hpp : expose v3 close method
- OfflineStorage_SQLite.cpp : move lock to outside of m_db check (race condition fix)
- OfflineStorageHandler.cpp : implementation of async flush copy from ram to disk + callback for records saved to disk
- Move local temp dir detection from UTC helpers to common MAT code
- Statistics.cpp : fix stats record decoration
- TelemetrySystem.cpp : reenable stats and move storage stop after telemetry system stop (otherwise there is a race condition)
- TPM : proper atomic check for uploads scheduled
- Added couple common utils from v1 codebase