diff options
author | Armando Montanez <amontanez@google.com> | 2021-09-30 21:38:20 -0700 |
---|---|---|
committer | CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2021-10-07 16:39:38 +0000 |
commit | fb7b4785477e224eb102a45d4e8f27b325a93950 (patch) | |
tree | aa0c27ee51030152bd9e8eb43ce186254d23e15b /pw_multisink/util.cc | |
parent | 559dd9710dcfdb016fc2e94d4864e88c1245b0be (diff) | |
download | pigweed-fb7b4785477e224eb102a45d4e8f27b325a93950.tar.gz |
pw_multisink: Unsafe iteration dump utilities
Addds a crash-time helper to dump a MultiSink used for proto encoded
logs.
Change-Id: I5b8efb3f2d3c86f403896fca9cdd4ddde5e6cc39
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/63282
Pigweed-Auto-Submit: Armando Montanez <amontanez@google.com>
Commit-Queue: Armando Montanez <amontanez@google.com>
Reviewed-by: Ewout van Bekkum <ewout@google.com>
Diffstat (limited to 'pw_multisink/util.cc')
-rw-r--r-- | pw_multisink/util.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/pw_multisink/util.cc b/pw_multisink/util.cc new file mode 100644 index 000000000..825701de6 --- /dev/null +++ b/pw_multisink/util.cc @@ -0,0 +1,34 @@ +// Copyright 2021 The Pigweed Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy of +// the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. + +#include "pw_multisink/util.h" + +#include "pw_bytes/span.h" +#include "pw_function/function.h" +#include "pw_multisink/multisink.h" +#include "pw_status/status.h" + +namespace pw::multisink { + +Status UnsafeDumpMultiSinkLogs(MultiSink& sink, + pw::log::LogEntries::StreamEncoder& encoder, + size_t max_num_entries) { + auto callback = [&encoder](ConstByteSpan entry) { + encoder.WriteBytes( + static_cast<uint32_t>(pw::log::LogEntries::Fields::ENTRIES), entry); + }; + return sink.UnsafeForEachEntry(callback, max_num_entries); +} + +} // namespace pw::multisink |