File: gevent.h

package info (click to toggle)
uwsgi 2.0.31-4
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 6,740 kB
  • sloc: ansic: 87,072; python: 7,014; cpp: 1,133; java: 708; perl: 678; sh: 585; ruby: 555; makefile: 146; xml: 130; cs: 121; objc: 37; php: 28; erlang: 20; javascript: 11
file content (61 lines) | stat: -rw-r--r-- 2,441 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "../python/uwsgi_python.h"

int uwsgi_gevent_wait_write_hook(int, int);
int uwsgi_gevent_wait_read_hook(int, int);
int uwsgi_gevent_wait_milliseconds_hook(int);

#define GEVENT_SWITCH PyObject *gswitch = python_call(ugevent.greenlet_switch, ugevent.greenlet_switch_args, 0, NULL); if (gswitch) { Py_DECREF(gswitch); }
#define GET_CURRENT_GREENLET python_call(ugevent.get_current, ugevent.get_current_args, 0, NULL)
#define free_req_queue uwsgi.async_queue_unused_ptr++; uwsgi.async_queue_unused[uwsgi.async_queue_unused_ptr] = wsgi_req
#define stop_the_watchers if (timer) { ret = PyObject_CallMethod(timer, "stop", NULL);\
                          if (ret) { Py_DECREF(ret); } }\
                          ret = PyObject_CallMethod(watcher, "stop", NULL);\
                          if (ret) { Py_DECREF(ret); }

#define stop_the_watchers_and_clear stop_the_watchers\
                        Py_DECREF(current); Py_DECREF(current_greenlet);\
                        Py_DECREF(watcher);\
                        if (timer) {Py_DECREF(timer);}

#define stop_the_io ret = PyObject_CallMethod(watcher, "stop", NULL);\
                    if (ret) { Py_DECREF(ret); }

#define stop_the_io_and_clear stop_the_io;\
                        Py_DECREF(current); Py_DECREF(current_greenlet);\
                        Py_DECREF(watcher);\

#define stop_the_c_watchers if (c_watchers) { int j;\
                                for(j=0;j<count;j++) {\
                                        if (c_watchers[j]) {\
                                                ret = PyObject_CallMethod(watcher, "stop", NULL);\
                                                if (ret) { Py_DECREF(ret); }\
                                                Py_DECREF(c_watchers[j]);\
                                        }\
                                }\
                                free(c_watchers);\
                        }




struct uwsgi_gevent {
        PyObject *greenlet_switch;
        PyObject *greenlet_switch_args;
        PyObject *get_current;
        PyObject *get_current_args;
        PyObject *hub;
        PyObject *hub_loop;
        PyObject *spawn;
        PyObject *signal;
        PyObject *greenlet_args;
        PyObject *signal_args;
        PyObject *my_signal_watcher;
        PyObject *signal_watcher;
        PyObject **watchers;
	PyObject *ctrl_gl;
	int destroy;
	int monkey;
	int wait_for_hub;
	int early_monkey;
};