Give pyqueues "popnow".

This commit is contained in:
Joris Vink 2018-10-22 08:28:03 +02:00
parent c8795b7d7f
commit fad5c6ea6f
2 changed files with 20 additions and 0 deletions

View File

@ -168,10 +168,12 @@ struct pyqueue {
static PyObject *pyqueue_pop(struct pyqueue *, PyObject *);
static PyObject *pyqueue_push(struct pyqueue *, PyObject *);
static PyObject *pyqueue_popnow(struct pyqueue *, PyObject *);
static PyMethodDef pyqueue_methods[] = {
METHOD("pop", pyqueue_pop, METH_NOARGS),
METHOD("push", pyqueue_push, METH_VARARGS),
METHOD("popnow", pyqueue_popnow, METH_NOARGS),
METHOD(NULL, NULL, -1)
};

View File

@ -1446,6 +1446,24 @@ pyqueue_pop(struct pyqueue *queue, PyObject *args)
return ((PyObject *)op);
}
static PyObject *
pyqueue_popnow(struct pyqueue *queue, PyObject *args)
{
PyObject *obj;
struct pyqueue_object *object;
if ((object = TAILQ_FIRST(&queue->objects)) == NULL) {
Py_RETURN_NONE;
}
TAILQ_REMOVE(&queue->objects, object, list);
obj = object->obj;
kore_pool_put(&queue_object_pool, object);
return (obj);
}
static PyObject *
pyqueue_push(struct pyqueue *queue, PyObject *args)
{