Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Side by Side Diff: mojo/public/cpp/bindings/lib/scoped_interface_endpoint_handle.h

Issue 1455063004: Mojo C++ bindings: introduce MultiplexRouter and related classes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_SCOPED_INTERFACE_ENDPOINT_HANDLE_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_SCOPED_INTERFACE_ENDPOINT_HANDLE_H_
7
8 #include "base/macros.h"
9 #include "base/memory/ref_counted.h"
10 #include "mojo/public/cpp/bindings/lib/interface_id.h"
11
12 namespace mojo {
13 namespace internal {
14
15 class MultiplexRouter;
16
17 // ScopedInterfaceEndpointHandle refers to one end of an interface, either the
18 // implementation side or the client side.
19 class ScopedInterfaceEndpointHandle {
20 MOVE_ONLY_TYPE_WITH_MOVE_CONSTRUCTOR_FOR_CPP_03(
21 ScopedInterfaceEndpointHandle);
22
23 public:
24 // Creates an invalid endpoint handle.
25 ScopedInterfaceEndpointHandle();
26
27 // This is supposed to be used by MultiplexRouter only.
28 // |id| is the corresponding interface ID.
29 // If |is_local| is false, this handle is meant to be passed over |router| to
30 // the remote side.
31 ScopedInterfaceEndpointHandle(InterfaceId id,
32 bool is_local,
33 scoped_refptr<MultiplexRouter> router);
34
35 ScopedInterfaceEndpointHandle(ScopedInterfaceEndpointHandle&& other);
36
37 ~ScopedInterfaceEndpointHandle();
38
39 ScopedInterfaceEndpointHandle& operator=(
40 ScopedInterfaceEndpointHandle&& other);
41
42 bool is_valid() const { return IsValidInterfaceId(id_); }
43
44 InterfaceId id() const { return id_; }
45 bool is_local() const { return is_local_; }
46 MultiplexRouter* router() const { return router_.get(); }
47
48 void reset();
49 void swap(ScopedInterfaceEndpointHandle& other);
50
51 // Releases the handle without closing it.
52 InterfaceId release();
53
54 private:
55 InterfaceId id_;
56 bool is_local_;
57 scoped_refptr<MultiplexRouter> router_;
58 };
59
60 } // namespace internal
61 } // namespace mojo
62
63 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_SCOPED_INTERFACE_ENDPOINT_HANDLE_H_
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/lib/router.cc ('k') | mojo/public/cpp/bindings/lib/scoped_interface_endpoint_handle.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698