blob: cf13af80de841f478db161fa7b425ea9ebbc6ce4 [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 <lib/virtualization/testing/fake_guest_vsock.h>
#include <lib/virtualization/testing/fake_host_vsock.h>
namespace guest {
namespace testing {
zx_status_t FakeGuestVsock::ConnectToHost(uint32_t port, ConnectCallback callback) {
return host_vsock_->AcceptConnectionFromGuest(port, std::move(callback));
}
zx_status_t FakeGuestVsock::Listen(uint32_t port, Acceptor acceptor) {
if (listeners_.find(port) != listeners_.end()) {
return ZX_ERR_ALREADY_BOUND;
}
listeners_.emplace(std::make_pair(port, std::move(acceptor)));
return ZX_OK;
}
void FakeGuestVsock::AcceptConnectionFromHost(
uint32_t port, zx::handle handle,
fuchsia::virtualization::HostVsockEndpoint::ConnectCallback callback) {
auto it = listeners_.find(port);
if (it == listeners_.end()) {
callback(ZX_ERR_CONNECTION_REFUSED);
} else {
callback(it->second(std::move(handle)));
}
}
} // namespace testing
} // namespace guest