Permalink
Switch branches/tags
Nothing to show
Commits on Sep 14, 2013
  1. typo

    committed Sep 14, 2013
  2. Update README.rst

    committed Sep 14, 2013
Commits on Oct 21, 2012
  1. hello world

    committed Oct 21, 2012
  2. update with latest ex

    committed Oct 21, 2012
Commits on Oct 4, 2012
  1. this doesn't exist

    committed Oct 4, 2012
  2. add increment/decrement functions

    Add functions to atomically increment/decrement an integer without lock.
    While I'm here add functions to compare and swap a value and read
    atomically an integer.
    committed Oct 4, 2012
Commits on Sep 21, 2012
  1. move a test

    committed Sep 21, 2012
Commits on Sep 20, 2012
Commits on Sep 14, 2012
  1. revisit the channel code. Support async send & recv

    Now if the capacity is greater than zero, the channel is asynchronous:
    communication operations succeed without blocking if the buffer is not
    full (sends) or not empty (receives), and elements are received in the
    order they are sent. If the capacity is zero or absent, the
    communication succeeds only when both a sender and receiver are ready.
    committed Sep 14, 2012
Commits on Sep 13, 2012
Commits on Sep 12, 2012
  1. fix race conditions.

    We don't want to be stick in the uv task so we reschedule it as fast as
    possible if this is the current task. While I'm here skip the runtime
    error if main is the last task. At some point we may want to introduce
    our own runtime wich would help a lot.
    committed Sep 12, 2012
  2. name uv server

    committed Sep 12, 2012
  3. fix

    committed Sep 12, 2012
  4. add defer function.

    A "defer" function invokes a function whose execution is deferred to the
    moment the surrounding function returns.
    
    Note: at some point we may want to introduce a new defer statement from
    flower in the python language but we will see it later. We are near the
    first release ....
    committed Sep 12, 2012
  5. count blocked tasks.

    committed Sep 12, 2012
  6. small refactoring of the scheduler

    - use public methods where it needs to be
    - rename _squeue in runnable. more explicit.
    committed Sep 12, 2012
Commits on Sep 11, 2012
  1. one pass over the code

    committed Sep 11, 2012
  2. missing file.

    committed Sep 11, 2012
  3. add a listener using the socket module.

    While uv watchers are evry fast it may be interresting to use the socket
    module as well so we can easily wrap later connections to handle SSL and
    also reuse shared TCP sockets on unix. (so we can eventually use this
    listener in gunicorn as well.
    committed Sep 11, 2012
  4. add Dial feature.

    A Dial is a generic client for stream-oriented protocols.
    
        Example::
    
            conn, err = Dial("tcp", ('127.0.0.1', 8000))
            conn.write("hello")
            print(conn.read()
    committed Sep 11, 2012
  5. add a pipe listener.

    A pipe listener act mostly like a tcp listener module the options and
    the write2 method.
    committed Sep 11, 2012
  6. refactor the code to handle udp that present a different interface

    We need to fake the accept workflow in UDP since UDP doesn't really works
    like TCP. On the other hand we still want to keep the advantages of this
    protocol. So what we do is the following:
    
        1. on first accept we start to receive on the bound address
        2. on receive we check if this client is already handle by a
    connection somewhere. If it's the case we send it the received data. If
    not we create a new one that we link to the listener.
    
    Which means that accept can happen in any task and receiving too.
    committed Sep 11, 2012
Commits on Sep 10, 2012
  1. sure I am!

    committed Sep 10, 2012
  2. fix writelines. and return

    committed Sep 10, 2012
  3. New listener features.

    A Listener is a generic network listener for stream-oriented protocols.
    Multiple tasks  may invoke methods on a Listener simultaneously.
    
    Example:
    
        def handle_connection(conn):
            while True:
                data = conn.read()
                if not data:
                    break
                conn.write(data)
    
        l = Listen(('127.0.0.1', 8000))
    
        try:
            while True:
                try:
                    conn, err = l.accept()
                    t = tasklet(handle_connection)(conn)
                except KeyboardInterrupt:
                    break
        finally:
            l.close()
    
        run()
    
    This listener use libuv binding and is fully asynchronous behind.
    committed Sep 10, 2012