Exemplo n.º 1
0
def _udp_alloc_callback_(handle, suggested_size, buf):
    ec = core.get_ec()
    self = uv_callback.peek(ec.uv__udp_recv, handle)
    if self.read_buffer_size > 0:
        array = alloc_uint8array(self.read_buffer_size)
    else:
        array = alloc_uint8array(rffi.r_long(suggested_size))
    self.alloc_buffers.append(array)
    buf.c_base = rffi.cast(rffi.CCHARP, array.uint8data)
    buf.c_len = rffi.r_size_t(array.length)
Exemplo n.º 2
0
def _listen_callback_(handle, status):
    status = int(status)
    ec = core.get_ec()
    if status < 0:
        self = uv_callback.drop(ec.uv__connection, handle)
        self.listen_status = status
    else:
        self = uv_callback.peek(ec.uv__connection, handle)
        self.listen_count += 1
    if self.accept_greenlet is not None:
        greenlet, self.accept_greenlet = self.accept_greenlet, None
        core.root_switch(ec, [greenlet])
Exemplo n.º 3
0
def _fs_event_cb_(handle, filename, events, status):
    ec = core.get_ec()
    try:
        self = uv_callback.peek(ec.uv__fs_event, handle)
        status = rffi.r_long(status)
        if self.status == 0 and status < 0:
            uv_callback.drop(ec.uv__fs_event, handle)
            self.status = status
            return
        obj = Exnihilo()
        obj.setattr(u"path", from_cstring(rffi.charp2str(filename)))
        if rffi.r_long(events) == 1:
            obj.setattr(u"type", String(u"rename"))
        else:
            obj.setattr(u"type", String(u"change"))
        if self.greenlet is None:
            self.data.append(obj)
        else:
            greenlet, self.greenlet = self.greenlet, None
            core.switch([greenlet, obj])
    except Unwinder as unwinder:
        core.root_unwind(ec, unwinder)