1 // Copyright 2019 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "mojo/public/cpp/bindings/generic_pending_receiver.h"
6 
7 namespace mojo {
8 
9 GenericPendingReceiver::GenericPendingReceiver() = default;
10 
GenericPendingReceiver(base::StringPiece interface_name,mojo::ScopedMessagePipeHandle receiving_pipe)11 GenericPendingReceiver::GenericPendingReceiver(
12     base::StringPiece interface_name,
13     mojo::ScopedMessagePipeHandle receiving_pipe)
14     : interface_name_(interface_name.as_string()),
15       pipe_(std::move(receiving_pipe)) {}
16 
17 GenericPendingReceiver::GenericPendingReceiver(GenericPendingReceiver&&) =
18     default;
19 
20 GenericPendingReceiver::~GenericPendingReceiver() = default;
21 
22 GenericPendingReceiver& GenericPendingReceiver::operator=(
23     GenericPendingReceiver&&) = default;
24 
reset()25 void GenericPendingReceiver::reset() {
26   interface_name_.reset();
27   pipe_.reset();
28 }
29 
PassPipe()30 mojo::ScopedMessagePipeHandle GenericPendingReceiver::PassPipe() {
31   DCHECK(is_valid());
32   interface_name_.reset();
33   return std::move(pipe_);
34 }
35 
PassPipeIfNameIs(const char * interface_name)36 mojo::ScopedMessagePipeHandle GenericPendingReceiver::PassPipeIfNameIs(
37     const char* interface_name) {
38   DCHECK(is_valid());
39   if (interface_name_ == interface_name)
40     return PassPipe();
41   return mojo::ScopedMessagePipeHandle();
42 }
43 
44 }  // namespace mojo
45