Index: mojo/public/python/src/python_system_helper.h |
diff --git a/mojo/public/python/src/python_system_helper.h b/mojo/public/python/src/python_system_helper.h |
index 1962ba787fa067f5c95f79960eefecee041d56a7..e0d83ca4b7d827ef5f01bd0b0844d9744854ff12 100644 |
--- a/mojo/public/python/src/python_system_helper.h |
+++ b/mojo/public/python/src/python_system_helper.h |
@@ -5,18 +5,46 @@ |
#ifndef MOJO_PUBLIC_PYTHON_SRC_PYTHON_SYSTEM_HELPER_H_ |
#define MOJO_PUBLIC_PYTHON_SRC_PYTHON_SYSTEM_HELPER_H_ |
-#include "Python.h" |
+// Python must be the first include, as it defines preprocessor variable without |
+// checking if they already exist. |
+#include <Python.h> |
+#include <map> |
+ |
+#include "mojo/public/c/environment/async_waiter.h" |
+#include "mojo/public/c/system/types.h" |
#include "mojo/public/cpp/bindings/callback.h" |
+#include "mojo/public/cpp/bindings/lib/shared_ptr.h" |
namespace mojo { |
+namespace python { |
// Create a mojo::Closure from a callable python object. |
mojo::Closure BuildClosure(PyObject* callable); |
-// Initalize mojo::RunLoop |
-void InitRunLoop(); |
+class PythonAsyncWaiter { |
+ public: |
+ PythonAsyncWaiter(); |
+ ~PythonAsyncWaiter(); |
+ MojoAsyncWaitID AsyncWait(MojoHandle handle, |
+ MojoHandleSignals signals, |
+ MojoDeadline deadline, |
+ PyObject* callable); |
+ |
+ void CancelWait(MojoAsyncWaitID wait_id); |
+ |
+ private: |
+ class AsyncWaiterRunnable; |
+ |
+ typedef std::map<MojoAsyncWaitID, |
+ internal::SharedPtr<mojo::Callback<void(MojoResult)> > > |
+ CallbackMap; |
+ |
+ CallbackMap callbacks_; |
+ const MojoAsyncWaiter* async_waiter_; |
+}; |
+} // namespace python |
} // namespace mojo |
#endif // MOJO_PUBLIC_PYTHON_SRC_PYTHON_SYSTEM_HELPER_H_ |