1. 25 Feb, 2024 1 commit
  2. 16 Feb, 2019 1 commit
    • 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