1. 22 Sep, 2017 1 commit
  2. 21 Sep, 2017 3 commits
    • Kenton Varda's avatar
      Try to fix builds. · f7bbbf4e
      Kenton Varda authored
      f7bbbf4e
    • Kenton Varda's avatar
      Implement HttpClient that automatically manages connections. · 2751b577
      Kenton Varda authored
      There are actually two new client types:
      - One which always connects to a given NetworkAddress, but will automatically manage a pool of reusable connections.
      - One which looks up the remote address based on the URL it is given, and manages a pool of connections for each host.
      
      The latter of these two is a "true HTTP client library".
      2751b577
    • Kenton Varda's avatar
      Add WaitScope::poll() and Promise::poll() to pump all events. · ece2a1aa
      Kenton Varda authored
      These are useful in unit tests. Often, some tasks have been queued, and we want to test that a particular thing happens or doesn't happen as a result of those tasks, without actually waiting on any specific promise. We need a way to run the event queue until it is empty. For that, we add WaitScope::poll().
      
      Or, sometimes, we want to check if a specific promise is (or is not!) resolved as a result of the tasks that have been queued so far, but we may not want to actulaly wait() on it for a couple reasons:
      - We may actually want to verify that the promise is *not* resolved by tasks so far. wait()ing on it would be expected to deadlock.
      - We may expect the promise to resolve, but would prefer not to deadlock if it doesn't resolve (we'd rather fail fast).
      
      For this, we add Promise::poll().
      
      There are lots of tests I've written which could be simplified by this, but for now I'm not refactoring any existing tests.
      
      Note that adding these (particularly Promise::poll()) required updating the async framework a bit, in that this is the first case where PromiseNode::onReady() might be called multiple times, or might be canceled without destroying the PromiseNode entirely. Luckily this was not hard to account for. (We still have the rule that get() can only be called once, though.)
      ece2a1aa
  3. 19 Sep, 2017 1 commit
  4. 18 Sep, 2017 1 commit
  5. 17 Sep, 2017 1 commit
  6. 15 Sep, 2017 4 commits
  7. 14 Sep, 2017 3 commits
  8. 12 Sep, 2017 11 commits
  9. 11 Sep, 2017 1 commit
  10. 08 Sep, 2017 2 commits
  11. 05 Sep, 2017 2 commits
  12. 04 Sep, 2017 3 commits
  13. 03 Sep, 2017 5 commits
  14. 19 Aug, 2017 1 commit
  15. 18 Aug, 2017 1 commit