Skip to content
Snippets Groups Projects
  1. Jul 12, 2013
    • Monty Brandenberg's avatar
      SH-4312 Configuration data between viewer and llcorehttp is clumsy. · eff651cf
      Monty Brandenberg authored
      Much improved.  Unified the global and class options into a single
      option list.  Implemented static and dynamic setting paths as much
      as possible.  Dynamic path does require packet/RPC but otherwise
      there's near unification.  Dynamic modes can't get values back yet
      due to the response/notifier scheme but this doesn't bother me.
      Flatten global and class options into simpler struct-like entities.
      Setter/getter available on these when needed (external APIs) but code
      can otherwise fiddle directly when it knows what to do.  Much duplicated
      options/state removed from HttpPolicy.  Comments cleaned up.  Threads
      better described and consistently mentioned in API docs.  Integration
      test extended for 503 responses with Reply-After headers.
      eff651cf
  2. Jun 20, 2013
    • Monty Brandenberg's avatar
      SH-4257 Preparation for a new cap grant: GetMesh2 · d6cbcd59
      Monty Brandenberg authored
      Mesh repo is using three policy classes now:  one for
      large objects, one for GetMesh2 regions, one for
      GetMesh regions.  It's also detecting the presence
      of the cap and using the correct class.  Class
      initialization cleaned up significantly in llappcorehttp
      using data-directed code.  Pulled in the changes to
      HttpHeader done for sunshine-internal then did a
      refactoring pass on the header callback which now
      uses a unified approach to clean up and deliver
      header information to all interested parties.  Added
      support for using Retry-After header information on
      503 retries.
      d6cbcd59
  3. Mar 29, 2013
  4. Jul 23, 2012
  5. Jul 03, 2012
    • Monty Brandenberg's avatar
      More integration work for texture fetch timeouts. · 2d7b7de2
      Monty Brandenberg authored
      The fetch state machine received a new timeout during the WAIT_HTTP_REQ
      state.  For the integration, rather than jump the state to done, we issue
      a request cancel and let the notification plumbing do the rest without
      any race conditions or special-case logic.
      2d7b7de2
  6. Jun 26, 2012
    • Monty Brandenberg's avatar
      SH-3184/SH-3221 More work on cleanup with better unit test work and more... · e8b0088d
      Monty Brandenberg authored
      SH-3184/SH-3221  More work on cleanup with better unit test work and more aggressive shutdown of a thread.
      Some additional work let me enable a memory check for the clean shutdown case and
      generally do a better job on other interfaces.  Request queue waiters now awake
      on shutdown and don't sleep once the queue is turned off.  Much better semantically
      for how this will be used.
      e8b0088d
  7. Jun 23, 2012
    • Monty Brandenberg's avatar
      SH-3184/SH-3221 Improve cleanup, destructor, thread termination, etc. logic in library. · e172ec84
      Monty Brandenberg authored
      With this commit, the cleanup paths should be production quality.  Unit tests have been
      expanded to include cases requiring thread termination and cleanup by the worker thread.
      Special operation/request added to support the unit tests.  Thread interface expanded
      to include a very aggressive cancel() method that does not do cleanup but prevents the
      thread from accessing objects that will be destroyed.
      e172ec84
  8. Jun 22, 2012
    • Monty Brandenberg's avatar
      This sets down the groundwork for dynamic policy classes. · bc7d5b24
      Monty Brandenberg authored
      Groundwork is used for the default class which currently represents
      texture fetching.  Class options implemented from API user into
      HttpLibcurl.  Policy layer is going to start doing some traffic
      shaping like work to solve problems with consumer-grade gear.
      Need to have dynamic aspects to policies and that starts now...
      bc7d5b24
  9. Jun 21, 2012
  10. Jun 19, 2012
  11. Jun 16, 2012
    • Monty Brandenberg's avatar
      First round of basic tuning work (shorter sleeps, larger BufferArray blocks). · 6193ee6a
      Monty Brandenberg authored
      Beefed up the metrics gathering in http_texture_load to get memory sizes and
      cpu consumption on windows (still need to implement that on Mac & linux).
      Ran runs with various idle loops with sleeps from 20 ms down to pure spinning,
      varied Block allocation size from 1504 to 2^20 bytes.  2ms/2ms/65540 appears
      to be a good spot under the test conditions (Win7, danu grid, client in Boston).
      6193ee6a
  12. Jun 14, 2012
    • Monty Brandenberg's avatar
      LLMutex recursive lock, global & per-request tracing, simple GET request,... · b08125a5
      Monty Brandenberg authored
      LLMutex recursive lock, global & per-request tracing, simple GET request, LLProxy support, HttpOptions starting to work, HTTP resource waiting fixed.
      Non-LLThread-based threads need to do some registration or LLMutex locks taken out in these
      threads will not work as expected (SH-3154).  We'll get a better solution later, this fixes
      some things for now.  Tracing of operations now supported.  Global and per-request (via
      HttpOptions) tracing levels of [0..3].  The 2 and 3 levels use libcurl's VERBOSE mode
      combined with CURLOPT_DEBUGFUNCTION to stream high levels of detail into the log.  *Very*
      laggy but useful.  Simple GET request supported (no Range: header).  Really just a
      degenrate case of a ranged get but supplied an API anyway.  Global option to use the
      LLProxy interface to setup CURL handles for either socks5 or http proxy usage.  This
      isn't really the most encapsulated way to do this but a better solution will have to
      come later.  The wantHeaders and tracing options are now supported in HttpOptions giving
      per-request controls.  Big refactoring of the HTTP resource waiter in lltexturefetch.
      What I was doing before wasn't correct.  Instead, I'm implementing the resource wait
      after the Semaphore model (though not using system semaphores).  So instead of having
      a sequence like:  SEND_HTTP_REQ -> WAIT_HTTP_RESOURCE -> SEND_HTTP_REQ, we now
      do WAIT_HTTP_RESOURCE -> WAIT_HTTP_RESOURCE2 (actual wait) -> SEND_HTTP_REQ.  Works
      well but the prioritized filling of the corehttp library needs some performance
      work later.
      b08125a5
  13. Jun 12, 2012
    • Monty Brandenberg's avatar
      HTTP Proxy, PUT & POST, unit tests and refactoring. · 7adeb392
      Monty Brandenberg authored
      Implemented/modified PUT & POST to not used chunked encoding for the request.
      Made the unit test much happier and probably a better thing for the pipeline.
      Have a cheesy static & dynamic proxy capability using both local options and
      a way to wire into LLProxy in llmessages.  Not a clean thing but it will get
      the proxy path working with both socks5 & http proxies.  Refactoring to get
      rid of unneeded library handler and unified an HttpStatus return for all
      requests.  Big batch of code removed as a result of that and more is possible
      as well as some syscall avoidance with a bit more work.  Boosted the unit
      tests for simple PUT & POST test which revealed the test harness does *not*
      like chunked encoding so we'll avoid it for now (and don't really need it
      in any of our schemes).
      7adeb392
  14. Jun 05, 2012
  15. Jun 01, 2012
    • Monty Brandenberg's avatar
      Missed two instances of priority typed as 'float'. Became an · 7b9da4ee
      Monty Brandenberg authored
      excuse to go through an use a typedef for priority and policy class id.
      7b9da4ee
    • Monty Brandenberg's avatar
      Major steps towards implementing the policy component. · b8edacd0
      Monty Brandenberg authored
      Identified and reacted to the priority inversion problem we
      have in texturefetch.  Includes the introduction of a priority_queue
      for the requests that are ready.  Start some parameterization in
      anticipation of having policy_class everywhere.  Removed _assert.h
      which isn't really needed in indra codebase.  Implemented async
      setPriority request (which I hope I can get rid of eventually along
      with all priorities in this library).  Converted to using unsigned
      int for priority rather than float.  Implemented POST and did
      groundwork for PUT.
      b8edacd0
  16. Apr 23, 2012
Loading