* Set the NOMINMAX macro for msbuild targets
* Set the NOMINMAX macro for CMake based builds.
* Get rid of #ifdefs and #undefs for min and max
* Use <PreprocessorDefinitions> to add the NOMINMAX macro, rather than <AdditionalOptions>
* Missed one <AdditionalOptions> blob.
Co-authored-by: Max Golovanov <maxgolov@microsoft.com>
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
Win 10 UWP SDK sporadic crash in HTTP stack.
Essentially it's the same fix that was previously done on Win32 Desktop: when we pass the buffer ptr to debug callback, the request has been already released and this may lead to trying to access the heap block possibly re-allocated for something else. The fix is to avoid de-allocation of HTTP req/resp until the handling is done, so when the wrapper is destroyed - the request object is also destroyed.
Related work items: #1510118
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
- 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