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

Side by Side Diff: mojo/public/cpp/bindings/interface_ptr.h

Issue 1660143006: Mojo C++ bindings: Move MakeProxy() -> InterfacePtr::Create(). (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: fix failed 'gn' Created 4 years, 10 months 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_H_
7 7
8 #include <algorithm> 8 #include <algorithm>
9 #include <cstddef> 9 #include <cstddef>
10 10
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 // Assigning nullptr to this class causes it to close the currently bound 50 // Assigning nullptr to this class causes it to close the currently bound
51 // message pipe (if any) and returns the pointer to the unbound state. 51 // message pipe (if any) and returns the pointer to the unbound state.
52 InterfacePtr& operator=(std::nullptr_t) { 52 InterfacePtr& operator=(std::nullptr_t) {
53 reset(); 53 reset();
54 return *this; 54 return *this;
55 } 55 }
56 56
57 // Closes the bound message pipe (if any) on destruction. 57 // Closes the bound message pipe (if any) on destruction.
58 ~InterfacePtr() {} 58 ~InterfacePtr() {}
59 59
60 // If |info| is valid (containing a valid message pipe handle), returns an
61 // InterfacePtr bound to it. Otherwise, returns an unbound InterfacePtr. The
62 // specified |waiter| will be used as in the InterfacePtr::Bind() method.
63 static InterfacePtr<Interface> Create(
64 InterfaceHandle<Interface> info,
65 const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter()) {
66 InterfacePtr<Interface> ptr;
67 if (info.is_valid())
68 ptr.Bind(info.Pass(), waiter);
69 return ptr;
70 }
71
60 // Binds the InterfacePtr to a remote implementation of Interface. The 72 // Binds the InterfacePtr to a remote implementation of Interface. The
61 // |waiter| is used for receiving notifications when there is data to read 73 // |waiter| is used for receiving notifications when there is data to read
62 // from the message pipe. For most callers, the default |waiter| will be 74 // from the message pipe. For most callers, the default |waiter| will be
63 // sufficient. 75 // sufficient.
64 // 76 //
65 // Calling with an invalid |info| (containing an invalid message pipe handle) 77 // Calling with an invalid |info| (containing an invalid message pipe handle)
66 // has the same effect as reset(). In this case, the InterfacePtr is not 78 // has the same effect as reset(). In this case, the InterfacePtr is not
67 // considered as bound. 79 // considered as bound.
68 void Bind( 80 void Bind(
69 InterfaceHandle<Interface> info, 81 InterfaceHandle<Interface> info,
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 return &internal_state_; 177 return &internal_state_;
166 } 178 }
167 179
168 private: 180 private:
169 typedef internal::InterfacePtrState<Interface> State; 181 typedef internal::InterfacePtrState<Interface> State;
170 mutable State internal_state_; 182 mutable State internal_state_;
171 183
172 MOJO_MOVE_ONLY_TYPE(InterfacePtr); 184 MOJO_MOVE_ONLY_TYPE(InterfacePtr);
173 }; 185 };
174 186
175 // If |info| is valid (containing a valid message pipe handle), returns an
176 // InterfacePtr bound to it. Otherwise, returns an unbound InterfacePtr. The
177 // specified |waiter| will be used as in the InterfacePtr::Bind() method.
178 template <typename Interface>
179 InterfacePtr<Interface> MakeProxy(
180 InterfaceHandle<Interface> info,
181 const MojoAsyncWaiter* waiter = Environment::GetDefaultAsyncWaiter()) {
182 InterfacePtr<Interface> ptr;
183 if (info.is_valid())
184 ptr.Bind(info.Pass(), waiter);
185 return ptr;
186 }
187
188 } // namespace mojo 187 } // namespace mojo
189 188
190 #endif // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_H_ 189 #endif // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_PTR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698