tree 4ac3fac0e2ca22d9143607137ef374089e678ca7
parent 3d481f375d1460bd295a4e2547cc767d57d506fc
author Andrei Litvin <andy314@gmail.com> 1686263394 -0400
committer GitHub <noreply@github.com> 1686263394 -0400
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJkglZiCRBK7hj4Ov3rIwAApmoIAD8DpSEbISyd8g2wRxCUqIXB
 G1fo303r71EYvi0jtzyl/9V3cC9Gilv6VD76Vt3R/uQkCCy3AKR5zUJ/ONWwb4js
 vLr13A4isFMJjLql7K96tvvXKwao9Q107mAb+WF5+fabYWT2yWHXVwRq/+jpO+KD
 1Cz4V0+XJf6YJ6WGEtOSXB/APx9eG5/fa7hc1t1rskmEu5oY8rxnOOCma+9Og3uY
 +SQ56L4+hiX1/UQuwMs+Qk2AEfYiD7XvQzcZvkVLXlME7gDObJx0WG74/cXqPmWP
 syzJHdWi/7ytq4w0TOjvC7sknto8WIxPkYAgmHJfArwXMpWEHZXaHGqMmAdvbU4=
 =jPHT
 -----END PGP SIGNATURE-----
 

Create a JSON Log tracing backend (#27135)

* Start a backend implementation, empty for now

* Add jsonpp support

* Allow sstream and string usage in the log tracing library

* remove unneeded log line

* Restyle

* Make matter tracing opt-in by default. Will enable it for chip-tool and linux apps at start

* make things compile, add dependency into chip-command

* Enable tracing for CHIPTool

* Ensure uniqueness

* Restyle

* Add a few more comments

* Add MATTER_TRACE_EVENT_SCOPE everywhere.

Ran:

```sh
rg MATTER_TRACE_EVENT_SCOPE --files-with-matches \
  | grep -v src/trace \
  | xargs sd \
     '(^(\s*)MATTER_TRACE_EVENT_SCOPE\("(.*)",\s*"(.*)"\);)' \
     "\${1}\n\${2}MATTER_TRACE_SCOPE(::chip::Tracing::Scope::\${4}_\${3});"
```

* Add tracing/scope.h include to have access to MATTER_TRACE_SCOPE

* Switch addressresolve to use matter tracing instead of tracevent (instant is one of the cases where matter_trace did not actually work)

* Switch out and add incremental resolve record parse

* Restyle

* Make chip-tool compile. Still need to fix device apps

* Fix compilation with tracing disabled

* Enable tracing by defaulf for a lot of example apps

* Add some dependencies to tracing

* Make sure no unused member error

* Another update for tracing disabled

* Restyle

* Scope the macros a bit more

* Restyle

* Only build tracing tests if tracing is enabled on the platform

* Restyle

* Enable tracing on linux using a different logic - all linux builds have tracing by default

* Restyle

* Fix check_includes_config

* Add a string splitter class

* Switch to use the support string splitter class

* Use standard command argument handling for CSV string vector

* Support optional string vector arguments

* Fix typo

* Do not fail on stringop-truncation in tests

* Fix initialization of mData for null cases for stringsplitter

* Restyled by clang-format

* Add more unit tests and ensure final empty element is emitted

* Restyled by clang-format

* separator should be const

* Restyled by clang-format

* Review comment: use char span

* Use char span for string splitting

* Restyled by clang-format

* Restyled by clang-format

* Force a static cast for size compares

* make linter happy

* Restyled by clang-format

---------

Co-authored-by: Andrei Litvin <andreilitvin@google.com>
Co-authored-by: Restyled.io <commits@restyled.io>