Age | Commit message (Collapse) | Author |
|
Last bit for this release. Describe stream adapters and how
to select a policy class. Slight changes to setup code to
make reality reflect documentation.
|
|
First edit complete. Use the library in 15 minutes. Describe the
code. Refinements to the initial try. Describe that code. Still
to do: more refinements, how to choose a policy class, FAQ.
|
|
While giving myself a full project code review, found a bug in
the MeshUseGetMesh1 setting. Mostly defaulted to old configuration
but used the GetMesh2 caps which would have been a huge DoS
resource sink. Did some documentation maintenance as well while
I was in there. More for the to-do list, etc.
|
|
Added toTerseString() conversion on HttpStatus to generate a string
that's more descriptive than the hex value of the HttpStatus value
but still forms a short, searchable token (e.g. "Http_503" or
"Core_7"). Using this throughout the viewer now, no live cases
of toHex(), I believe.
|
|
Added 'MeshUseGetMesh1' and 'MeshUseHttpRetryAfter' debug settings
to control mesh transport behavior. First forces the use of the
legacy mesh fetch style with high concurrency and connection churn.
The second, on by default, honors Retry-After values if they are
reasonable. If off or unreasonable, internal delay times are used.
|
|
In case of HTTP errors or parsing/processing errors, fail the
fetch request rather than do a retry spin. Add logging for all
such failure paths. Added a development/debug flag to create
probabilistic failures to test these modes and general error
recovery by higher-level layers.
|
|
|
|
the last time and that repo can soon be abandoned (QA function
only).
|
|
|
|
|
|
|
|
before. Move libcurl forward to 7.24.0 and built on 0.9.8.
Until we do some TC work, we may be stuck with this combo.
|
|
|
|
|
|
so that doesn't move. 3p-curl does, however, and this gets them
all. I suspect I'll be backing down to 0.9.8 next week.
|
|
|
|
on the build farm. This, at least, gets us through the openssl->
libcurl->viewer dependency chain.
|
|
|
|
|
|
|
|
|
|
can know exactly where a retry value was sourced.
|
|
Do some runtime code avoidance and skip unnecessary libcurl and
syscall invocations.
|
|
lists to reflect current. Describe the functional flow of things
for a single LOD request. Put together to-do list for follow on
work. Knock down the low/high water limits for GetMesh a bit,
100/200 too high, 75/150 should be better, vis-a-vis pathological
failures.
|
|
|
|
|
|
LLNormalTextSegment::getNumChars.
|
|
|
|
GetMesh2 capabilities. They should be independent now.
|
|
|
|
Have the ::notifyLoadedMeshes() method doing correct locking
and stall avoidance at the same time. This method now does
lazy mutex lock acquisition (trylock()) and if it fails on
either, it gives up and comes back later. Capture the maximum
number of sequential failures and report this at the end of
the run in the log. (So far, with big mesh regions, I've
only seen 1s and 2s.) Locking/mutex requirements sorted in
other locations as well. LLMutex gets trylock() method as
well as new LLMutexTrylock scoped locking class. Clean up
some documentation, more to do.
|
|
|
|
The logic in llcommandlineparser.cpp's setControlValueCB() callback function
for converting command-line switch argument values from string to the actual
type of the map-to settings variable had a couple special cases for boolean
and LLSD array. But for S32, U32 and F32, it simply used default LLSD
string-to-numeric conversion. LLSD's string-to-numeric conversion is a bit
lame: for non-numeric strings, it shrugs and returns 0.
Introduce onevalue() and badvalue() helper functions that, like certain errors
during command-line parsing, throw LLCLPError. Use them to streamline certain
redundancies in setControlValueCB(). Introduce convertTo<T>() helper function
that uses boost::lexical_cast() for slightly more stringent conversions. Add
cases for U32, S32 and F32 targets.
setControlValueCB() is actually called only by LLControlGroupCLP::notify(),
not during actual command-line parsing.
Make LLControlGroupCLP::notify() return bool. Make it catch LLCLPError, set
the error for getErrorMessage() and return false on that exception.
Package LLAppViewer::initConfiguration()'s response to initParseCommandLine()
returning false as a new handleCommandLineError() function; invoke it both
there and when LLControlGroupCLP::notify() returns false.
|
|
added a Mesh status line to the texture fetch console. Mesh is
often in competition with textures and so the mesh information
seems appropriate there. Do get a nice feel for progress and
you definitely see when the throttles kick in.
|
|
|
|
|
|
|
|
|
|
|
|
While linking GetMesh2 to the old setting was simpler from a user
point-of-view, they really shouldn't be linked and the old one will
go away. This one may be renamed to AssetMaxConcurrentRequests or
something similar if we get to the mesh/texture unification step.
|
|
|
|
Previous CHOP-959 logic set a flag to remember that settings variable
RenderQualityPerformance was set (by --graphicslevel), so it could be applied
once LLViewerWindow is constructed. But on first viewer run, LLViewerWindow
constructor calls LLFeatureManager::applyRecommendedSettings(), which resets
that settings variable! So don't just set a flag, actually capture the
requested RenderQualityPerformance value for later.
|
|
|
|
missing code block from previous change as per Dave P's advice
|
|
bullet-proof. Reviewed by Kelly
|
|
This really extended into the client-side request throttling.
Moved this from llmeshrepository (which doesn't really want
to do connection management) into llcorehttp. It's now a
class option with configurable rate. This still isn't the
right thing to do as it creates coupling between viewer
and services. When we get to pipelining, this notion becomes
invalid.
|
|
goes blank if location is selected and a menu item is seleted
|
|
|
|
|
|
|