mirror of
https://github.com/clearlinux/uwsgi.git
synced 2026-08-29 20:54:04 +00:00
implemented more async api in lua
This commit is contained in:
@@ -187,7 +187,6 @@ static PyObject *py_uwsgi_close(PyObject * self, PyObject * args) {
|
||||
|
||||
close(fd);
|
||||
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
|
||||
@@ -604,59 +603,6 @@ PyObject *py_uwsgi_set_logvar(PyObject * self, PyObject * args) {
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
PyObject *py_uwsgi_recv_block(PyObject * self, PyObject * args) {
|
||||
|
||||
char buf[4096];
|
||||
char *bufptr;
|
||||
ssize_t rlen = 0, len;
|
||||
int fd, size, remains, ret, timeout = -1;
|
||||
|
||||
|
||||
if (!PyArg_ParseTuple(args, "ii|i:recv_block", &fd, &size, &timeout)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (fd < 0)
|
||||
goto clear;
|
||||
|
||||
UWSGI_RELEASE_GIL
|
||||
// security check
|
||||
if (size > 4096)
|
||||
size = 4096;
|
||||
|
||||
remains = size;
|
||||
|
||||
bufptr = buf;
|
||||
while (remains > 0) {
|
||||
uwsgi_log("%d %d %d\n", remains, size, timeout);
|
||||
ret = uwsgi_waitfd(fd, timeout);
|
||||
if (ret > 0) {
|
||||
len = read(fd, bufptr, UMIN(remains, size));
|
||||
if (len > 0) {
|
||||
bufptr += len;
|
||||
rlen += len;
|
||||
remains -= len;
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
uwsgi_log("error waiting for block data\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
UWSGI_GET_GIL if (rlen == size) {
|
||||
return PyString_FromStringAndSize(buf, rlen);
|
||||
}
|
||||
|
||||
clear:
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
PyObject *py_uwsgi_recv(PyObject * self, PyObject * args) {
|
||||
|
||||
int fd, max_size = 4096;
|
||||
@@ -685,28 +631,19 @@ PyObject *py_uwsgi_recv(PyObject * self, PyObject * args) {
|
||||
|
||||
PyObject *py_uwsgi_is_connected(PyObject * self, PyObject * args) {
|
||||
|
||||
int fd, soopt;
|
||||
socklen_t solen = sizeof(int);
|
||||
int fd = -1;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "i:is_connected", &fd)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *) (&soopt), &solen) < 0) {
|
||||
uwsgi_error("getsockopt()");
|
||||
goto clear;
|
||||
if (uwsgi_is_connected(fd)) {
|
||||
Py_INCREF(Py_True);
|
||||
return Py_True;
|
||||
}
|
||||
/* is something bad ? */
|
||||
if (soopt)
|
||||
goto clear;
|
||||
|
||||
Py_INCREF(Py_True);
|
||||
return Py_True;
|
||||
|
||||
clear:
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
Py_INCREF(Py_False);
|
||||
return Py_False;
|
||||
}
|
||||
|
||||
|
||||
@@ -2562,7 +2499,6 @@ static PyMethodDef uwsgi_advanced_methods[] = {
|
||||
{"is_connected", py_uwsgi_is_connected, METH_VARARGS, ""},
|
||||
{"send", py_uwsgi_send, METH_VARARGS, ""},
|
||||
{"recv", py_uwsgi_recv, METH_VARARGS, ""},
|
||||
{"recv_block", py_uwsgi_recv_block, METH_VARARGS, ""},
|
||||
{"close", py_uwsgi_close, METH_VARARGS, ""},
|
||||
{"i_am_the_spooler", py_uwsgi_i_am_the_spooler, METH_VARARGS, ""},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user