From 651b5e11c9692589a1b4dabb8b854679720168ca Mon Sep 17 00:00:00 2001 From: mopemoepe Date: Tue, 21 Aug 2012 08:29:06 +0900 Subject: [PATCH] use greenlet 0.4 --- meinheld/server/greenlet.h | 4 +++- meinheld/server/greensupport.c | 14 ++++++++++++++ meinheld/server/greensupport.h | 1 + setup.py | 2 +- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/meinheld/server/greenlet.h b/meinheld/server/greenlet.h index 1d0d28f..9b98ca7 100644 --- a/meinheld/server/greenlet.h +++ b/meinheld/server/greenlet.h @@ -11,7 +11,7 @@ extern "C" { #endif -#define GREENLET_VERSION "0.3.4" +#define GREENLET_VERSION "0.4.0" typedef struct _greenlet { PyObject_HEAD @@ -28,9 +28,11 @@ typedef struct _greenlet { PyObject* exc_type; PyObject* exc_value; PyObject* exc_traceback; + PyObject* dict; } PyGreenlet; #define PyGreenlet_Check(op) PyObject_TypeCheck(op, &PyGreenlet_Type) +#define PyGreenlet_MAIN(op) (((PyGreenlet*)(op))->stack_stop == (char*) -1) #define PyGreenlet_STARTED(op) (((PyGreenlet*)(op))->stack_stop != NULL) #define PyGreenlet_ACTIVE(op) (((PyGreenlet*)(op))->stack_start != NULL) #define PyGreenlet_GET_PARENT(op) (((PyGreenlet*)(op))->parent) diff --git a/meinheld/server/greensupport.c b/meinheld/server/greensupport.c index 5c763a7..0a3af71 100644 --- a/meinheld/server/greensupport.c +++ b/meinheld/server/greensupport.c @@ -94,3 +94,17 @@ greenlet_check(PyObject *g) return PyGreenlet_Check((PyGreenlet*)g); } +PyObject* +get_greenlet_dict(PyObject *o) +{ + PyGreenlet *g = (PyGreenlet*)o; + if (g->dict == NULL) { + g->dict = PyDict_New(); + if (g->dict == NULL){ + return NULL; + } + } + Py_INCREF(g->dict); + return g->dict; +} + diff --git a/meinheld/server/greensupport.h b/meinheld/server/greensupport.h index 0fcad18..6b2d4fb 100644 --- a/meinheld/server/greensupport.h +++ b/meinheld/server/greensupport.h @@ -17,5 +17,6 @@ PyObject* greenlet_throw(PyObject *g, PyObject *typ, PyObject *val, PyObject *tb PyObject* greenlet_throw_err(PyObject *g); int greenlet_dead(PyObject *g); int greenlet_check(PyObject *g); +PyObject* get_greenlet_dict(PyObject *o); #endif diff --git a/setup.py b/setup.py index 0697b3e..f4d956d 100644 --- a/setup.py +++ b/setup.py @@ -62,7 +62,7 @@ def get_sources(path, ignore_files): define_macros=[ ("WITH_GREENLET",None), ("HTTP_PARSER_DEBUG", "0") ] - install_requires=['greenlet==0.3.4'] + install_requires=['greenlet==0.4.0'] if develop: define_macros.append(("DEVELOP",None))