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

Side by Side Diff: mojo/public/python/src/python_system_helper.h

Issue 573253002: mojo: Add async waiter for python bindings (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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_PYTHON_SRC_PYTHON_SYSTEM_HELPER_H_ 5 #ifndef MOJO_PUBLIC_PYTHON_SRC_PYTHON_SYSTEM_HELPER_H_
6 #define MOJO_PUBLIC_PYTHON_SRC_PYTHON_SYSTEM_HELPER_H_ 6 #define MOJO_PUBLIC_PYTHON_SRC_PYTHON_SYSTEM_HELPER_H_
7 7
8 #include <map>
9
8 #include "Python.h" 10 #include "Python.h"
9 11
12 #include "mojo/public/c/environment/async_waiter.h"
13 #include "mojo/public/c/system/types.h"
10 #include "mojo/public/cpp/bindings/callback.h" 14 #include "mojo/public/cpp/bindings/callback.h"
15 #include "mojo/public/cpp/bindings/lib/shared_ptr.h"
11 16
12 namespace mojo { 17 namespace mojo {
18 namespace python {
13 19
14 // Create a mojo::Closure from a callable python object. 20 // Create a mojo::Closure from a callable python object.
15 mojo::Closure BuildClosure(PyObject* callable); 21 mojo::Closure BuildClosure(PyObject* callable);
16 22
17 // Initalize mojo::RunLoop 23 class PythonAsyncWaiter {
18 void InitRunLoop(); 24 public:
25 PythonAsyncWaiter();
26 ~PythonAsyncWaiter();
27 MojoAsyncWaitID AsyncWait(MojoHandle handle,
28 MojoHandleSignals signals,
29 MojoDeadline deadline,
30 PyObject* callable);
19 31
32 void CancelWait(MojoAsyncWaitID wait_id);
33
34 private:
35 class AsyncWaiterRunnable;
36
37 typedef std::map<MojoAsyncWaitID,
38 internal::SharedPtr<mojo::Callback<void(MojoResult)> > >
39 CallbackMap;
40
41 CallbackMap callbacks_;
42 const MojoAsyncWaiter* async_waiter_;
43 };
44
45 } // namespace python
20 } // namespace mojo 46 } // namespace mojo
21 47
22 #endif // MOJO_PUBLIC_PYTHON_SRC_PYTHON_SYSTEM_HELPER_H_ 48 #endif // MOJO_PUBLIC_PYTHON_SRC_PYTHON_SYSTEM_HELPER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698