Fix up async wrappers. Comment out gevent stuff for now
This commit is contained in:
@@ -3,6 +3,9 @@
|
||||
|
||||
extern "C" {
|
||||
PyObject * wrap_kj_exception(kj::Exception &);
|
||||
// void _gevent_eventloop_prepare_to_sleep();
|
||||
// void _gevent_eventloop_sleep();
|
||||
// void _gevent_eventloop_wake();
|
||||
}
|
||||
|
||||
PyObject * wrapPyFunc(PyObject * func, PyObject * arg) {
|
||||
@@ -21,4 +24,32 @@ PyObject * wrapPyFunc(PyObject * func, PyObject * arg) {
|
||||
else
|
||||
return loop.there(kj::mv(promise), [func](PyObject * arg) { return wrapPyFunc(func, arg); }
|
||||
, [error_func](kj::Exception arg) { return wrapPyFunc(error_func, wrap_kj_exception(arg)); } );
|
||||
}
|
||||
}
|
||||
::kj::Promise<PyObject *> then(kj::Promise<PyObject *> & promise, PyObject * func, PyObject * error_func) {
|
||||
if(error_func == Py_None)
|
||||
return promise.then([func](PyObject * arg) { return wrapPyFunc(func, arg); } );
|
||||
else
|
||||
return promise.then([func](PyObject * arg) { return wrapPyFunc(func, arg); }
|
||||
, [error_func](kj::Exception arg) { return wrapPyFunc(error_func, wrap_kj_exception(arg)); } );
|
||||
}
|
||||
|
||||
::kj::Promise<PyObject *> yield_end(kj::EventLoop & loop) {
|
||||
return loop.there(loop.yield(), []() { Py_RETURN_NONE; } );
|
||||
}
|
||||
|
||||
// class PyEventLoop final: public ::kj::EventLoop {
|
||||
// public:
|
||||
// PyEventLoop() {}
|
||||
// ~PyEventLoop() noexcept(false) {}
|
||||
|
||||
// protected:
|
||||
// void prepareToSleep() noexcept override {
|
||||
// _gevent_eventloop_prepare_to_sleep();
|
||||
// }
|
||||
// void sleep() override {
|
||||
// _gevent_eventloop_sleep();
|
||||
// }
|
||||
// void wake() const override {
|
||||
// _gevent_eventloop_wake();
|
||||
// }
|
||||
// };
|
||||
Reference in New Issue
Block a user