OLD | NEW |
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_REQUEST_H_ | 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_REQUEST_H_ |
6 #define MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_REQUEST_H_ | 6 #define MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_REQUEST_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 28 matching lines...) Expand all Loading... |
39 // MakeRequest(InterfacePtr*) below. | 39 // MakeRequest(InterfacePtr*) below. |
40 explicit InterfaceRequest(InterfacePtr<Interface>* ptr, | 40 explicit InterfaceRequest(InterfacePtr<Interface>* ptr, |
41 scoped_refptr<base::SingleThreadTaskRunner> runner = | 41 scoped_refptr<base::SingleThreadTaskRunner> runner = |
42 base::ThreadTaskRunnerHandle::Get()) { | 42 base::ThreadTaskRunnerHandle::Get()) { |
43 MessagePipe pipe; | 43 MessagePipe pipe; |
44 ptr->Bind(InterfacePtrInfo<Interface>(std::move(pipe.handle0), 0u), | 44 ptr->Bind(InterfacePtrInfo<Interface>(std::move(pipe.handle0), 0u), |
45 std::move(runner)); | 45 std::move(runner)); |
46 Bind(std::move(pipe.handle1)); | 46 Bind(std::move(pipe.handle1)); |
47 } | 47 } |
48 | 48 |
| 49 // Similar to the constructor above, but binds one end of the message pipe to |
| 50 // an InterfacePtrInfo instance. |
| 51 explicit InterfaceRequest(InterfacePtrInfo<Interface>* ptr_info) { |
| 52 MessagePipe pipe; |
| 53 ptr_info->set_handle(std::move(pipe.handle0)); |
| 54 ptr_info->set_version(0u); |
| 55 Bind(std::move(pipe.handle1)); |
| 56 } |
| 57 |
49 // Takes the message pipe from another InterfaceRequest. | 58 // Takes the message pipe from another InterfaceRequest. |
50 InterfaceRequest(InterfaceRequest&& other) { | 59 InterfaceRequest(InterfaceRequest&& other) { |
51 handle_ = std::move(other.handle_); | 60 handle_ = std::move(other.handle_); |
52 } | 61 } |
53 InterfaceRequest& operator=(InterfaceRequest&& other) { | 62 InterfaceRequest& operator=(InterfaceRequest&& other) { |
54 handle_ = std::move(other.handle_); | 63 handle_ = std::move(other.handle_); |
55 return *this; | 64 return *this; |
56 } | 65 } |
57 | 66 |
58 // Assigning to nullptr resets the InterfaceRequest to an empty state, | 67 // Assigning to nullptr resets the InterfaceRequest to an empty state, |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 // CreateSource(std::move(source_request)); // Create implementation locally. | 165 // CreateSource(std::move(source_request)); // Create implementation locally. |
157 // | 166 // |
158 template <typename Interface> | 167 template <typename Interface> |
159 InterfaceRequest<Interface> MakeRequest( | 168 InterfaceRequest<Interface> MakeRequest( |
160 InterfacePtr<Interface>* ptr, | 169 InterfacePtr<Interface>* ptr, |
161 scoped_refptr<base::SingleThreadTaskRunner> runner = | 170 scoped_refptr<base::SingleThreadTaskRunner> runner = |
162 base::ThreadTaskRunnerHandle::Get()) { | 171 base::ThreadTaskRunnerHandle::Get()) { |
163 return InterfaceRequest<Interface>(ptr, runner); | 172 return InterfaceRequest<Interface>(ptr, runner); |
164 } | 173 } |
165 | 174 |
| 175 // Similar to the constructor above, but binds one end of the message pipe to |
| 176 // an InterfacePtrInfo instance. |
| 177 template <typename Interface> |
| 178 InterfaceRequest<Interface> MakeRequest(InterfacePtrInfo<Interface>* ptr_info) { |
| 179 return InterfaceRequest<Interface>(ptr_info); |
| 180 } |
| 181 |
166 // Fuses an InterfaceRequest<T> endpoint with an InterfacePtrInfo<T> endpoint. | 182 // Fuses an InterfaceRequest<T> endpoint with an InterfacePtrInfo<T> endpoint. |
167 // Returns |true| on success or |false| on failure. | 183 // Returns |true| on success or |false| on failure. |
168 template <typename Interface> | 184 template <typename Interface> |
169 bool FuseInterface(InterfaceRequest<Interface> request, | 185 bool FuseInterface(InterfaceRequest<Interface> request, |
170 InterfacePtrInfo<Interface> proxy_info) { | 186 InterfacePtrInfo<Interface> proxy_info) { |
171 MojoResult result = FuseMessagePipes(request.PassMessagePipe(), | 187 MojoResult result = FuseMessagePipes(request.PassMessagePipe(), |
172 proxy_info.PassHandle()); | 188 proxy_info.PassHandle()); |
173 return result == MOJO_RESULT_OK; | 189 return result == MOJO_RESULT_OK; |
174 } | 190 } |
175 | 191 |
176 } // namespace mojo | 192 } // namespace mojo |
177 | 193 |
178 #endif // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_REQUEST_H_ | 194 #endif // MOJO_PUBLIC_CPP_BINDINGS_INTERFACE_REQUEST_H_ |
OLD | NEW |