blob: b1976ea681293fce88e20ad5e87e1c011fa7932b [file] [log] [blame]
// Copyright 2018 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 "frobinator_impl.h"
#include <lib/fit/function.h>
#include <utility>
#include "lib/fpromise/result.h"
namespace fidl {
namespace test {
FrobinatorImpl::FrobinatorImpl(fit::closure on_destroy) : on_destroy_(std::move(on_destroy)) {}
FrobinatorImpl::~FrobinatorImpl() { on_destroy_(); }
void FrobinatorImpl::Frob(std::string value) { frobs.push_back(std::move(value)); }
void FrobinatorImpl::Grob(std::string value, GrobCallback callback) {
grobs.push_back(std::move(value));
callback("response");
}
void FrobinatorImpl::Fail(bool fail, FailCallback callback) {
if (fail) {
callback(fpromise::error(42U));
} else {
callback(fpromise::ok());
}
}
void FrobinatorImpl::FailHard(bool fail, FailHardCallback callback) {
if (fail) {
callback(fpromise::error(42U));
} else {
callback(fpromise::ok(std::string("hello, world")));
}
}
void FrobinatorImpl::FailHardest(bool fail, FailHardestCallback callback) {
if (fail) {
callback(fpromise::error(42U));
} else {
callback(fpromise::ok(std::make_tuple(std::string("hello"), std::string("world"))));
}
}
void FrobinatorImpl::SendEventHandle(zx::event event) {}
void FrobinatorImpl::SendProtocol(fidl::InterfaceHandle<fidl::test::frobinator::EmptyProtocol> ep) {
}
void FrobinatorImpl::SendBasicUnion(fidl::test::frobinator::BasicUnion u) {
send_basic_union_received_value_ = u.v();
}
} // namespace test
} // namespace fidl