예제 #1
0
    def __init__(self, io, mode=0, label=''):
        super(IOChannel, self).__init__(label=label)

        fno = get_fd(io)
        self.io = io
        uv = uv_server()
        self._poller = pyuv.Poll(uv.loop, fno)
        self._poller.start(uv_mode(mode), self._tick)
예제 #2
0
파일: tcp.py 프로젝트: benoitc/flower
    def __init__(self, addr=('0.0.0.0', 0)):
        # listeners are all couroutines waiting for a connections
        self.listeners = deque()
        self.uv = uv_server()
        self.sched = get_scheduler()
        self.task = getcurrent()
        self.listening = False

        self.handler = self.HANDLER_CLASS(self.uv.loop)
        self.handler.bind(addr)
예제 #3
0
파일: udp.py 프로젝트: BigRLab/flower
    def __init__(self, addr=('0.0.0.0', 0)):
        # listeners are all couroutines waiting for a connections
        self.listeners = deque()

        self.conns = {}
        self.uv = uv_server()
        self.task = getcurrent()
        self.listening = False
        self.handler = pyuv.UDP(self.uv.loop)
        self.handler.bind(addr)
예제 #4
0
    def __init__(self, addr=('0.0.0.0', 0)):
        # listeners are all couroutines waiting for a connections
        self.listeners = deque()
        self.uv = uv_server()
        self.sched = get_scheduler()
        self.task = getcurrent()
        self.listening = False

        self.handler = self.HANDLER_CLASS(self.uv.loop)
        self.handler.bind(addr)
예제 #5
0
파일: pipe.py 프로젝트: BigRLab/flower
def dial_pipe(addr):
    uv = uv_server()
    h = pyuv.Pipe(uv.loop)

    c = channel()
    def _on_connect(handle, error):
        c.send((handle, error))

    h.connect(addr, _on_connect)
    h1, error = c.receive()
    return (PipeConn(h1), error)
예제 #6
0
파일: udp.py 프로젝트: BigRLab/flower
 def __init__(self, addr, raddr, client=None):
     self.uv = uv_server()
     if client is None:
         self.client = pyuv.UDP(self.uv.loop)
         self.client.bind(raddr)
     else:
         self.client = client
     self.reading = True
     self.queue = deque()
     self.cr = channel
     self._raddr = raddr
     self.addr = addr
예제 #7
0
파일: tcp.py 프로젝트: benoitc/flower
def dial_tcp(addr):
    uv = uv_server()
    h = pyuv.TCP(uv.loop)

    c = channel()
    def _on_connect(handle, error):
        if error:
            c.send_exception(IOError, "uv error: %s" % error)
        else:
            c.send(handle)

    h.connect(addr, _on_connect)
    h1 = c.receive()
    return TCPConn(h1)
예제 #8
0
    def __init__(self, addr=('0.0.0.0', 0), proto="tcp"):
        try:
            self.handler_class = UV_HANDLERS[proto]
        except KeyError:
            raise ValueError("type should be tcp, udp or unix")

        # listeners are all couroutines waiting for a connections
        self.listeners = deque()
        self.uv = uv_server()
        self.sched = get_scheduler()
        self.task = getcurrent()
        self.listening = False

        self.handler = self.handler_class(self.uv.loop)
        self.handler.bind(addr)
예제 #9
0
def dial_tcp(addr):
    uv = uv_server()
    h = pyuv.TCP(uv.loop)

    c = channel()

    def _on_connect(handle, error):
        if error:
            c.send_exception(IOError, "uv error: %s" % error)
        else:
            c.send(handle)

    h.connect(addr, _on_connect)
    h1 = c.receive()
    return TCPConn(h1)
예제 #10
0
파일: sock.py 프로젝트: benoitc/flower
    def __init__(self, addr, *args, **kwargs):

        sock = None
        fd = None
        if "sock" in kwargs:
            # we passed a socket in the kwargs, just use it
            sock = kwargs['sock']
            fd = sock.fileno()
        elif isinstance(addr, int):
            # we are reusing a socket here
            fd = addr
            if "family" not in kwargs:
                family = socket.AF_INET
            else:
                family = kwargs['family']
            sock = socket.fromfd(fd, family, socket.SOCK_STREAM)
        else:
            # new socket
            addr = parse_address(addr)
            if is_ipv6(addr[0]):
                family = socket.AF_INET6
            else:
                family = socket.AF_INET

            sock = socket.socket(family, socket.SOCK_STREAM)
            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

            nodelay = kwargs.get('nodelay', True)
            if family == socket.AF_INET and nodelay:
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)

            sock.bind(addr)
            sock.setblocking(0)
            fd = sock.fileno()

        self.sock = sock
        self.fd = fd
        self.addr = addr
        self.backlog = kwargs.get('backlog', 128)
        self.timeout = socket.getdefaulttimeout()
        self.uv = uv_server()
        self.poller = None
        self.listeners = deque()
        self.task = getcurrent()

        # start to listen
        self.sock.listen(self.backlog)
예제 #11
0
파일: sock.py 프로젝트: BigRLab/flower
    def __init__(self, addr, *args, **kwargs):

        sock = None
        fd = None
        if "sock" in kwargs:
            # we passed a socket in the kwargs, just use it
            sock = kwargs['sock']
            fd = sock.fileno()
        elif isinstance(addr, int):
            # we are reusing a socket here
            fd = addr
            if "family" not in kwargs:
                family = socket.AF_INET
            else:
                family = kwargs['family']
            sock = socket.fromfd(fd, family, socket.SOCK_STREAM)
        else:
            # new socket
            addr = parse_address(addr)
            if is_ipv6(addr[0]):
                family = socket.AF_INET6
            else:
                family = socket.AF_INET

            sock = socket.socket(family, socket.SOCK_STREAM)
            sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

            nodelay = kwargs.get('nodelay', True)
            if family == socket.AF_INET and nodelay:
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)

            sock.bind(addr)
            sock.setblocking(0)
            fd = sock.fileno()

        self.sock = sock
        self.fd = fd
        self.addr = addr
        self.backlog = kwargs.get('backlog', 128)
        self.timeout = socket.getdefaulttimeout()
        self.uv = uv_server()
        self.poller = None
        self.listeners = deque()
        self.task = getcurrent()

        # start to listen
        self.sock.listen(self.backlog)
예제 #12
0
파일: sock.py 프로젝트: benoitc/flower
    def __init__(self, client, laddr, addr):
        # set connection info
        self.client = client
        self.client.setblocking(0)
        self.timeout = socket.getdefaulttimeout()
        self.laddr = laddr
        self.addr = addr

        # utilies used to fetch & send ata
        self.cr = channel() # channel keeping readers waiters
        self.cw = channel() # channel keeping writers waiters
        self.queue = deque() # queue of readable data
        self.uv = uv_server()
        self.rpoller = None
        self.wpoller = None
        self._lock = threading.RLock()
        self.ncr = 0 # reader refcount
        self.ncw = 0 # writer refcount

        self.closing = False
예제 #13
0
파일: sock.py 프로젝트: BigRLab/flower
    def __init__(self, client, laddr, addr):
        # set connection info
        self.client = client
        self.client.setblocking(0)
        self.timeout = socket.getdefaulttimeout()
        self.laddr = laddr
        self.addr = addr

        # utilies used to fetch & send ata
        self.cr = channel()  # channel keeping readers waiters
        self.cw = channel()  # channel keeping writers waiters
        self.queue = deque()  # queue of readable data
        self.uv = uv_server()
        self.rpoller = None
        self.wpoller = None
        self._lock = threading.RLock()
        self.ncr = 0  # reader refcount
        self.ncw = 0  # writer refcount

        self.closing = False
예제 #14
0
파일: base.py 프로젝트: benoitc/flower
 def __init__(self):
     self.task = getcurrent()
     self.uv = uv_server()
     self.sched = get_scheduler()
     self.c = channel()
예제 #15
0
파일: udp.py 프로젝트: BigRLab/flower
def dial_udp(laddr, raddr):
    uv = uv_server()
    h = pyuv.UDP(uv.loop)
    h.bind(laddr)

    return (UDPConn(laddr, raddr, h), None)
예제 #16
0
파일: base.py 프로젝트: BigRLab/flower
 def __init__(self):
     self.task = getcurrent()
     self.uv = uv_server()
     self.sched = get_scheduler()
     self.c = channel()