<feed xmlns='http://www.w3.org/2005/Atom'>
<title>viewer.git/indra/test/llsd_new_tut.cpp, branch 26.1.1</title>
<subtitle>Megapahit's fork of the Second Life viewer.
</subtitle>
<id>https://megapahit.org/viewer.git/atom?h=26.1.1</id>
<link rel='self' href='https://megapahit.org/viewer.git/atom?h=26.1.1'/>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/'/>
<updated>2024-04-29T04:56:09Z</updated>
<entry>
<title>#824 Process source files in bulk: replace tabs with spaces, convert CRLF to LF, and trim trailing whitespaces as needed</title>
<updated>2024-04-29T04:56:09Z</updated>
<author>
<name>Andrey Lihatskiy</name>
<email>alihatskiy@productengine.com</email>
</author>
<published>2024-04-29T04:43:28Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=1b68f71348ecf3983b76b40d7940da8377f049b7'/>
<id>urn:sha1:1b68f71348ecf3983b76b40d7940da8377f049b7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>remove execute permission from many files that should not have it</title>
<updated>2015-11-10T14:48:56Z</updated>
<author>
<name>Oz Linden</name>
<email>oz@lindenlab.com</email>
</author>
<published>2015-11-10T14:48:56Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=c8726aba303bcf1207b730a344536e25491420bc'/>
<id>urn:sha1:c8726aba303bcf1207b730a344536e25491420bc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove Visual Studio workaround for lack of std::fpclassify().</title>
<updated>2014-12-16T19:03:57Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2014-12-16T19:03:57Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=210c95b283332bc463edb8baa2d6438c3fd500af'/>
<id>urn:sha1:210c95b283332bc463edb8baa2d6438c3fd500af</id>
<content type='text'>
Visual Studio 2013 evidently does provide std::fpclassify(), so we no longer
need the funky local alias.
</content>
</entry>
<entry>
<title>Suppress non-useful NaN test in llsd_new_tut.cpp</title>
<updated>2014-10-24T18:55:37Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2014-10-24T18:55:37Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=80fdd85a0ca3007d84fc696deab408482821c127'/>
<id>urn:sha1:80fdd85a0ca3007d84fc696deab408482821c127</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update to build on Xcode 6.0 (fix unit tests): comment out failing unit test in llsd_new_tut.cpp to let the build proceed - will fix later</title>
<updated>2014-10-23T01:06:21Z</updated>
<author>
<name>callum_linden</name>
<email>none@none</email>
</author>
<published>2014-10-23T01:06:21Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=2b8673d15a9298dde00f69373735abf68d11e5d3'/>
<id>urn:sha1:2b8673d15a9298dde00f69373735abf68d11e5d3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>merge</title>
<updated>2013-05-21T20:18:48Z</updated>
<author>
<name>Brad Payne (Vir Linden)</name>
<email>vir@lindenlab.com</email>
</author>
<published>2013-05-21T20:18:48Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=a04a706c1bf145505afd2da8d149ba909b56045f'/>
<id>urn:sha1:a04a706c1bf145505afd2da8d149ba909b56045f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update Mac and Windows breakpad builds to latest</title>
<updated>2013-03-29T14:50:08Z</updated>
<author>
<name>Graham Madarasz</name>
<email>graham@lindenlab.com</email>
</author>
<published>2013-03-29T14:50:08Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=bf6182daa8b4d7cea79310547f71d7a3155e17b0'/>
<id>urn:sha1:bf6182daa8b4d7cea79310547f71d7a3155e17b0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Large changes to the LLCurl::Responder API, as well as pulling in some changes to common libraries from the server codebase:</title>
<updated>2013-03-13T06:26:25Z</updated>
<author>
<name>Don Kjer</name>
<email>don@lindenlab.com</email>
</author>
<published>2013-03-13T06:26:25Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=f945415210f0e18c2c6d941fda6b7d45cb0f06f1'/>
<id>urn:sha1:f945415210f0e18c2c6d941fda6b7d45cb0f06f1</id>
<content type='text'>
* Additional error checking in http handlers.
* Uniform log spam for http errors.
* Switch to using constants for http heads and status codes.
* Fixed bugs in incorrectly checking if parsing LLSD xml resulted in an error.
* Reduced spam regarding LLSD parsing errors in the default completedRaw http handler.  It should not longer be necessary to short-circuit completedRaw to avoid spam.
* Ported over a few bug fixes from the server code.
* Switch mode http status codes to use S32 instead of U32.
* Ported LLSD::asStringRef from server code; avoids copying strings all over the place.
* Ported server change to LLSD::asBinary; this always returns a reference now instead of copying the entire binary blob.
* Ported server pretty notation format (and pretty binary format) to llsd serialization.

* The new LLCurl::Responder API no longer has two error handlers to choose from.  Overriding the following methods have been deprecated:
** error - use httpFailure
** errorWithContent - use httpFailure
** result - use httpSuccess
** completed - use httpCompleted
** completedHeader - no longer necessary; call getResponseHeaders() from a completion method to obtain these headers.

* In order to 'catch' a completed http request, override one of these methods:
** httpSuccess - Called for any 2xx status code.
** httpFailure - Called for any non-2xx status code.
** httpComplete - Called for all status codes.  Default implementation is to call either httpSuccess or httpFailure.
* It is recommended to keep these methods protected/private in order to avoid triggering of these methods without using a 'push' method (see below).

* Uniform error handling should followed whenever possible by calling a variant of this during httpFailure:
** llwarns &lt;&lt; dumpResponse() &lt;&lt; llendl;
* Be sure to include LOG_CLASS(your_class_name) in your class in order for the log entry to give more context.

* In order to 'push' a result into the responder, you should no longer call error, errorWithContent, result, or completed.
* Nor should you directly call httpSuccess/Failure/Completed (unless passing a message up to a parent class).
* Instead, you can set the internal content of a responder and trigger a corresponding method using the following methods:
** successResult - Sets results and calls httpSuccess
** failureResult - Sets results and calls httpFailure
** completedResult - Sets results and calls httpCompleted

* To obtain information about a the response from a reponder method, use the following getters:
** getStatus - HTTP status code
** getReason - Reason string
** getContent - Content (Parsed body LLSD)
** getResponseHeaders - Response Headers (LLSD map)
** getHTTPMethod - HTTP method of the request
** getURL - URL of the request

* It is still possible to override completeRaw if you want to manipulate data directly out of LLPumpIO.

* See indra/llmessage/llcurl.h for more information.
</content>
</entry>
<entry>
<title>Automated merge with http://hg.secondlife.com/viewer-development</title>
<updated>2011-12-01T21:53:28Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2011-12-01T21:53:28Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=8cbc54d519f8495deee1b1a0da1e08f647ae0cc1'/>
<id>urn:sha1:8cbc54d519f8495deee1b1a0da1e08f647ae0cc1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>LLSD-14: Move LLSD::(outstanding|allocation)Count() to free functions.</title>
<updated>2011-12-01T21:50:27Z</updated>
<author>
<name>Nat Goodspeed</name>
<email>nat@lindenlab.com</email>
</author>
<published>2011-12-01T21:50:27Z</published>
<link rel='alternate' type='text/html' href='https://megapahit.org/viewer.git/commit/?id=95fb0249e9f43d907608cc5840d1f8c0e49981d0'/>
<id>urn:sha1:95fb0249e9f43d907608cc5840d1f8c0e49981d0</id>
<content type='text'>
Free functions can be unconditionally compiled into the .o file, but
conditionally hidden in the header file. Static class methods don't have that
flexibility: without a declaration in the header file, you can't compile a
function definition in the .cpp file. That makes it awkward to use the same
llcommon build for production and for unit tests.
Why make the function declarations conditional at all? These are debugging
functions. They break the abstraction, they peek under the covers. Production
code should not use them. Making them conditional on an #ifdef symbol in the
unit-test source file means the compiler would reject any use by production
code. Put differently, it allows us to assert with confidence that only unit
tests do use them.
Put new free functions in (lowercase) llsd namespace so as not to clutter
global namespace.
Tweak the one known consumer (llsd_new_tut.cpp) accordingly.
</content>
</entry>
</feed>
