blob: c7c432e1fc62c7c87853596c7dd0779488c51d43 [file] [log] [blame]
// 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