| // Copyright 2021 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <lib/fidl/cpp/any_error_in.h> |
| |
| #include <cstdio> |
| #include <cstring> |
| |
| namespace fidl::internal { |
| |
| size_t AnyErrorInBase::FormatImpl(const char* prelude, FormattingBuffer& buffer, |
| fit::inline_callback<size_t(char*, size_t)> display_error) { |
| int num_would_write = 0; |
| if (prelude != nullptr) { |
| num_would_write = snprintf(buffer.begin(), buffer.size(), "%s", prelude); |
| ZX_ASSERT(num_would_write > 0); |
| if (static_cast<size_t>(num_would_write) >= buffer.size()) { |
| return buffer.size() - 1; |
| } |
| } |
| char* begin = buffer.begin() + num_would_write; |
| size_t len = buffer.size() - num_would_write; |
| return display_error(begin, len) + num_would_write; |
| } |
| |
| const char* AnyErrorInBase::kTransportErrorPrelude = nullptr; |
| const char* AnyErrorInBase::kApplicationErrorPrelude = "FIDL application error: "; |
| |
| } // namespace fidl::internal |