• Nathaniel Wesley Filardo's avatar
    A generic fifo and fifosock wrapper, under telnet and http server (#2650) · dcc1ea2a
    Nathaniel Wesley Filardo authored
    * lua_modules/fifo: a generic queue & socket wrapper
    
    One occasionally wants a generic fifo, so here's a plausible
    implementation that's reasonably flexible in its usage.
    
    One possible consumer of this is a variant of TerryE's two-level fifo
    trick currently in the telnetd example.  Factor that out to fifosock for
    more general use.
    
    * lua_examples/telnet: use factored out fifosock
    
    * lua_modules/http: improve implementation
    
    Switch to fifosock for in-order sending and waiting for everything to be
    sent before closing.
    
    Fix header callback by moving the invocation of the handler higher
    
    * fifosock: optimistically cork and delay tx
    
    If we just pushed a little bit of data into a fifosock that had idled,
    wait a tick (1 ms) before transmitting.  Hopefully, this means that
    we let the rest of the system push more data in before we send the first
    packet.  But in a high-throughput situation, where we are streaming data
    without idling the fifo, there won't be any additional delay and we'll
    coalesce during operation as usual.
    
    The fifosocktest mocks up enough of tmr for this to run, but assumes
    an arbitrarily slow processor. ;)
    dcc1ea2a
httpserver.lua 6.23 KB