def __init__(me, addr, resolvedproc = None, failedproc = None):
pass
-cdef void _resfunc(hostent *h, void *arg):
+cdef void _resfunc2(hostent *h, void *arg):
cdef SelResolve r
cdef int i
r = <SelResolve>arg
addr.append(inet_ntoa((<in_addr *>h.h_addr_list[i])[0]))
i = i + 1
r.resolved(h.h_name, alias, addr)
+cdef void _resfunc(hostent *h, void *arg):
+ PyEval_AcquireLock()
+ _resfunc2(h, arg)
+ PyEval_ReleaseLock()
bres_exec(NULL)
bres_init(&_sel)
def error(me, errno, strerror):
return _maybecall(me._error, ())
-cdef void _connfunc(int fd, void *arg):
+cdef void _connfunc2(int fd, void *arg):
cdef SelConnect c
c = <SelConnect>arg
c._dead()
c.error(errno, strerror(errno))
else:
c.connected()
+cdef void _connfunc(int fd, void *arg):
+ PyEval_AcquireLock()
+ _connfunc2(fd, arg)
+ PyEval_ReleaseLock()
#----- That's all, folks ----------------------------------------------------
object PyInt_FromLong(long i)
object PyLong_FromUnsignedLong(unsigned long i)
+ void PyEval_AcquireLock()
+ void PyEval_ReleaseLock()
+
ctypedef struct PyObject:
pass
ctypedef struct PyTypeObject:
def bogus(me):
return _maybecall(me._bogus, ())
-cdef void _identfunc(ident_reply *i, void *arg):
+cdef void _identfunc2(ident_reply *i, void *arg):
cdef SelIdentify id
id = <SelIdentify>arg
id._dead()
id.error(i.u.error)
elif i.type == IDENT_USERID:
id.user(i.u.userid.os, i.u.userid.user)
+cdef void _identfunc(ident_reply *i, void *arg):
+ PyEval_AcquireLock()
+ _identfunc2(i, arg)
+ PyEval_ReleaseLock()
#----- That's all, folks ----------------------------------------------------
cdef sel_state _sel
def select():
- if sel_select(&_sel) and errno != EINTR and errno != EAGAIN:
+ cdef int rc
+ PyEval_ReleaseLock()
+ rc = sel_select(&_sel)
+ PyEval_AcquireLock()
+ if rc and errno != EINTR and errno != EAGAIN:
_oserror()
sel_init(&_sel)
def ready(me):
return _maybecall(me._ready, ())
-cdef void _filefunc(int fd, unsigned mode, void *arg):
+cdef void _filefunc2(void *arg):
cdef SelFile sf
sf = <SelFile>arg
sf.ready()
+cdef void _filefunc(int fd, unsigned mode, void *arg):
+ PyEval_AcquireLock()
+ _filefunc2(arg)
+ PyEval_ReleaseLock()
#----- That's all, folks ----------------------------------------------------
def timer(me, now):
return _maybecall(me._timer, ())
-cdef void _timerfunc(timeval *now, void *arg):
+cdef void _timerfunc2(timeval *now, void *arg):
cdef SelTimer st
st = <SelTimer>arg
st._dead()
st.timer(_tvtofloat(now))
+cdef void _timerfunc(timeval *now, void *arg):
+ PyEval_AcquireLock()
+ _timerfunc2(now, arg)
+ PyEval_ReleaseLock()
#----- That's all, folks ----------------------------------------------------
def eof(me):
return _maybecall(me._eof, ())
-cdef void _selbfunc(char *s, size_t n, void *arg):
+cdef void _selbfunc2(char *s, size_t n, void *arg):
cdef SelLineBuffer sb
sb = <SelLineBuffer>arg
if s is NULL:
sb.eof()
else:
sb.line(PyString_FromStringAndSize(s, n))
+cdef void _selbfunc(char *s, size_t n, void *arg):
+ PyEval_AcquireLock()
+ _selbfunc2(s, n, arg)
+ PyEval_ReleaseLock()
#----- That's all, folks ----------------------------------------------------
def eof(me):
return _maybecall(me._eof, ())
-cdef void _selpkfunc(unsigned char *p, size_t n, pkbuf *pk,
- size_t *keep, void *arg):
+cdef void _selpkfunc2(unsigned char *p, size_t n, pkbuf *pk,
+ size_t *keep, void *arg):
cdef SelPacketBuffer pb
cdef void *rp
cdef int rn
if rn:
memcpy(p + n - rn, rp, rn)
keep[0] = rn
+cdef void _selpkfunc(unsigned char *p, size_t n, pkbuf *pk,
+ size_t *keep, void *arg):
+ PyEval_AcquireLock()
+ _selpkfunc2(p, n, pk, keep, arg)
+ PyEval_ReleaseLock()
#----- That's all, folks ----------------------------------------------------
def signalled(me):
return _maybecall(me._signalled, ())
-cdef void _sigfunc(int sig, void *arg):
+cdef void _sigfunc2(void *arg):
cdef SelSignal s
s = <SelSignal>arg
s.signalled()
+cdef void _sigfunc(int sig, void *arg):
+ PyEval_AcquireLock()
+ _sigfunc2(arg)
+ PyEval_ReleaseLock()
sig_init(&_sel)