static PyObject * Stream_func_start_read(Stream *self, PyObject *args) { int err; PyObject *tmp, *callback; tmp = NULL; RAISE_IF_HANDLE_NOT_INITIALIZED(self, NULL); RAISE_IF_HANDLE_CLOSED(self, PyExc_HandleClosedError, NULL); if (!PyArg_ParseTuple(args, "O:start_read", &callback)) { return NULL; } if (!PyCallable_Check(callback)) { PyErr_SetString(PyExc_TypeError, "a callable is required"); return NULL; } err = uv_read_start((uv_stream_t *)UV_HANDLE(self), (uv_alloc_cb)pyuv__alloc_cb, (uv_read_cb)pyuv__stream_read_cb); if (err < 0) { RAISE_STREAM_EXCEPTION(err, UV_HANDLE(self)); return NULL; } tmp = self->on_read_cb; Py_INCREF(callback); self->on_read_cb = callback; Py_XDECREF(tmp); PYUV_HANDLE_INCREF(self); Py_RETURN_NONE; }
static PyObject * Idle_func_start(Idle *self, PyObject *args) { int err; PyObject *tmp, *callback; tmp = NULL; RAISE_IF_HANDLE_NOT_INITIALIZED(self, NULL); RAISE_IF_HANDLE_CLOSED(self, PyExc_HandleClosedError, NULL); if (!PyArg_ParseTuple(args, "O:start", &callback)) { return NULL; } if (!PyCallable_Check(callback)) { PyErr_SetString(PyExc_TypeError, "a callable is required"); return NULL; } err = uv_idle_start(&self->idle_h, pyuv__idle_cb); if (err < 0) { RAISE_UV_EXCEPTION(err, PyExc_IdleError); return NULL; } tmp = self->callback; Py_INCREF(callback); self->callback = callback; Py_XDECREF(tmp); PYUV_HANDLE_INCREF(self); Py_RETURN_NONE; }
static PyObject * UDP_func_start_recv(UDP *self, PyObject *args) { int err; PyObject *tmp, *callback; tmp = NULL; RAISE_IF_HANDLE_NOT_INITIALIZED(self, NULL); RAISE_IF_HANDLE_CLOSED(self, PyExc_HandleClosedError, NULL); if (!PyArg_ParseTuple(args, "O:start_recv", &callback)) { return NULL; } if (!PyCallable_Check(callback)) { PyErr_SetString(PyExc_TypeError, "a callable is required"); return NULL; } err = uv_udp_recv_start(&self->udp_h, (uv_alloc_cb)on_alloc, (uv_udp_recv_cb)on_udp_read); if (err < 0) { RAISE_UV_EXCEPTION(err, PyExc_UDPError); return NULL; } tmp = self->on_read_cb; Py_INCREF(callback); self->on_read_cb = callback; Py_XDECREF(tmp); PYUV_HANDLE_INCREF(self); Py_RETURN_NONE; }
static PyObject * Timer_func_start(Timer *self, PyObject *args, PyObject *kwargs) { int err; double timeout, repeat; PyObject *tmp, *callback; static char *kwlist[] = {"callback", "timeout", "repeat", NULL}; tmp = NULL; RAISE_IF_HANDLE_NOT_INITIALIZED(self, NULL); RAISE_IF_HANDLE_CLOSED(self, PyExc_HandleClosedError, NULL); if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Odd:__init__", kwlist, &callback, &timeout, &repeat)) { return NULL; } if (!PyCallable_Check(callback)) { PyErr_SetString(PyExc_TypeError, "a callable is required"); return NULL; } if (timeout < 0.0) { PyErr_SetString(PyExc_ValueError, "a positive value or zero is required"); return NULL; } if (repeat < 0.0) { PyErr_SetString(PyExc_ValueError, "a positive value or zero is required"); return NULL; } err = uv_timer_start(&self->timer_h, on_timer_callback, (uint64_t)(timeout * 1000), (uint64_t)(repeat * 1000)); if (err < 0) { RAISE_UV_EXCEPTION(err, PyExc_TimerError); return NULL; } tmp = self->callback; Py_INCREF(callback); self->callback = callback; Py_XDECREF(tmp); PYUV_HANDLE_INCREF(self); Py_RETURN_NONE; }
static PyObject * SignalChecker_func_start(SignalChecker *self) { int err; RAISE_IF_HANDLE_NOT_INITIALIZED(self, NULL); RAISE_IF_HANDLE_CLOSED(self, PyExc_HandleClosedError, NULL); err = uv_poll_start(&self->poll_h, UV_READABLE, pyuv__check_signals); if (err < 0) { RAISE_UV_EXCEPTION(err, PyExc_UVError); return NULL; } PYUV_HANDLE_INCREF(self); Py_RETURN_NONE; }