blob: 4c57a8ff4915d3d638a359ed92964a1b98bef933 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "mojo/public/cpp/bindings/generic_pending_associated_receiver.h"
#include <string_view>
#include <utility>
#include "base/check.h"
namespace mojo {
GenericPendingAssociatedReceiver::GenericPendingAssociatedReceiver() = default;
GenericPendingAssociatedReceiver::GenericPendingAssociatedReceiver(
std::string_view interface_name,
mojo::ScopedInterfaceEndpointHandle handle)
: interface_name_(std::string(interface_name)),
handle_(std::move(handle)) {}
GenericPendingAssociatedReceiver::GenericPendingAssociatedReceiver(
GenericPendingAssociatedReceiver&&) = default;
GenericPendingAssociatedReceiver& GenericPendingAssociatedReceiver::operator=(
GenericPendingAssociatedReceiver&&) = default;
GenericPendingAssociatedReceiver::~GenericPendingAssociatedReceiver() = default;
void GenericPendingAssociatedReceiver::reset() {
interface_name_.reset();
handle_.reset();
}
mojo::ScopedInterfaceEndpointHandle
GenericPendingAssociatedReceiver::PassHandle() {
DCHECK(is_valid());
interface_name_.reset();
return std::move(handle_);
}
mojo::ScopedInterfaceEndpointHandle
GenericPendingAssociatedReceiver::PassHandleIfNameIs(
const char* interface_name) {
DCHECK(is_valid());
if (interface_name_ == interface_name)
return PassHandle();
return mojo::ScopedInterfaceEndpointHandle();
}
} // namespace mojo