blob: 8d9d9bde81d33120864ecfba02c2a0b82b822210 [file] [log] [blame]
// Copyright 2019 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 "archive_accessor_stub.h"
#include <fuchsia/diagnostics/cpp/fidl.h>
#include <lib/syslog/cpp/macros.h>
#include "src/lib/fsl/vmo/strings.h"
namespace harvester {
std::vector<fuchsia::diagnostics::FormattedContent> ToVmo(
const std::vector<std::string>& json_batch) {
std::vector<fuchsia::diagnostics::FormattedContent> json_batch_vmo;
json_batch_vmo.reserve(json_batch.size());
for (const auto& json_chunk : json_batch) {
fsl::SizedVmo vmo;
FX_CHECK(fsl::VmoFromString(json_chunk, &vmo));
fuchsia::diagnostics::FormattedContent content;
content.set_json(std::move(vmo).ToTransport());
json_batch_vmo.push_back(std::move(content));
}
return json_batch_vmo;
}
void ArchiveAccessorStub::StreamDiagnostics(
fuchsia::diagnostics::StreamParameters stream_parameters,
::fidl::InterfaceRequest<fuchsia::diagnostics::BatchIterator> request) {
batch_iterator_binding_ =
std::make_unique<::fidl::Binding<fuchsia::diagnostics::BatchIterator>>(
batch_iterator_.get(), std::move(request));
}
void BatchIteratorStub::GetNext(GetNextCallback callback) {
callback(::fit::ok(ToVmo(*next_json_batch_++)));
}
void BatchIteratorReturnsErrorStub::GetNext(GetNextCallback callback) {
callback(::fit::error(fuchsia::diagnostics::ReaderError::IO));
}
} // namespace harvester