summaryrefslogtreecommitdiff
path: root/indra/llcommon
AgeCommit message (Collapse)Author
2015-07-01MAINT-5351: Reorganize lleventcoro_test.cpp to be more readable.Nat Goodspeed
Each test<n>() method invokes a function from earlier in the source. It's much better if each of those functions immediately precedes the test that invokes it.
2015-07-01MAINT-5351: Remove 'self' parameter from coroutine functions.Nat Goodspeed
lleventcoro_test.cpp runs clean (as modified for new API), and all the rest builds clean, but the resulting viewer is as yet untested.
2015-07-01MAINT-5351: Remove Boost Preprocessor headers from llcoros.h.Nat Goodspeed
These were used in a former iteration (when we explicitly forwarded parameters), but are no longer needed.
2015-06-30MergeRider Linden
2015-06-30Initial checkin for uploading via coroutine.Rider Linden
2015-06-30MAINT-5232: Add tests for new LLSingleton dependency functionality.Nat Goodspeed
2015-06-29MAINT-4952: Fix misplaced comments on intrusive_ptr_etc() overloads.Nat Goodspeed
2015-06-26MAINT-5232: Use LLError::Log::demangle() to log LLSingleton classes.Nat Goodspeed
2015-06-26MAINT-5232: merge LLError::Log::demangle() to tipNat Goodspeed
2015-06-26MAINT-5232: Publish class name demangler as LLError::Log::demangle().Nat Goodspeed
We've had this functionality buried in llerror.cpp for years. Make it available for callers outside llerror.cpp too.
2015-06-26MAINT-5232: Loosen LLSingleton circularity constraints slightly.Nat Goodspeed
LLSingleton explicitly supports circular dependencies: initialization performed during an LLSingleton subclass's initSingleton() method may recursively call that same subclass's getInstance() method. On the other hand, circularity from a subclass constructor cannot be permitted, else getInstance() would have to return a partially-constructed object. Our dependency tracking circularity check initially forbade both. Loosen it to permit references from within initSingleton().
2015-06-25MAINT-5232: Correct forward declaration of LLSingleton_manage_master.Nat Goodspeed
The forward declaration said it was a 'friend class', whereas the actual definition is a struct. MSVC dislikes that.
2015-06-25MAINT-5232: Try to avoid circularity between LLError and LLSingleton.Nat Goodspeed
Part of LLError's logging infrastructure is implemented with an LLSingleton. Therefore, attempts to log from within LLSingleton machinery could potentially go south if LLError's LLSingleton is not yet initialized. Introduce LLError::is_available() in llerrorcontrol.h and llerror.cpp. Make LLSingletonBase::logwarns() and logerrs() consult LLError::is_available() before attempting to use LL_WARNS or LL_ERRS, respectively. Moreover, make all LLSingleton internal logging use logwarns() and logerrs() instead of directly engaging LL_ERRS or LL_WARNS.
2015-06-24MAINT-5232: Introduce inter-LLSingleton dependency tracking.Nat Goodspeed
Introduce LLSingleton::cleanupSingleton() canonical method as the place to put any subclass cleanup logic that might take nontrivial realtime or throw an exception. Neither is appropriate in a destructor. Track all extant LLSingleton subclass instances on a master list, which permits adding LLSingletonBase::cleanupAll() and deleteAll() methods. Also notice when any LLSingleton subclass constructor (or initSingleton() method) calls instance() or getInstance() for another LLSingleton, and capture that other LLSingleton instance as a dependency of the first. This permits cleanupAll() and deleteAll() to perform a dependency sort on the master list, thus cleaning up (or deleting) leaf LLSingletons AFTER the LLSingletons that depend on them. Make C++ runtime's final static destructor call LLSingletonBase::deleteAll() instead of deleting individual LLSingleton instances in arbitrary order. Eliminate "llerror.h" from llsingleton.h, a longstanding TODO.
2015-06-17Coding policy fixesRider Linden
2015-05-29MAINT-5232: Make LLPounceable noncopyable.Nat Goodspeed
Changing the queue-of-callables implementation to boost::signals2::signal, which is noncopyable, means that LLPounceable itself should be noncopyable.
2015-05-29MAINT-5232: Per Vir review, use Boost.Signals2 for LLPounceable.Nat Goodspeed
Vir points out that "queue of callables" is pretty much exactly what a signal does. Add unit tests to verify chronological order, also queue reset when fired.
2015-05-28MAINT-5232: Stop documenting deprecated alternative LLSingleton usage.Nat Goodspeed
2015-05-28MAINT-5232: Provide better commentation for llinitdestroyclass.h.Nat Goodspeed
2015-05-27MAINT-5232: Extract LLInitClass, LLDestroyClass from llui/llui.hNat Goodspeed
to a new llcommon/llinitdestroyclass.h. This mechanism is so general -- but has so many related moving parts -- that (a) it deserves to be in a header file all its own, instead of conflated with llui.h, and (b) it should be in llcommon where anyone can use it. It has no dependencies whatsoever on llui or anything viewer-specific. In this very changeset we changed one #include "llui.h" whose comment admits that it was only dragged in for LLDestroyClass.
2015-05-22MAINT-5232: Add LLPounceable template for delayed registrations.Nat Goodspeed
LLMuteList, an LLSingleton, overrides its getInstance() method to intercept control every time a consumer wants LLMuteList. This "polling" is to notice when gMessageSystem becomes non-NULL, and register a couple callbacks on it. Unfortunately there are a couple ways to request the LLMuteList instance without specifically calling the subclass getInstance(), which would bypass that logic. Moreover, the polling feels a bit dubious to start with. LLPounceable<T*> presents an idiom in which you can callWhenReady(callable) on the LLPounceable instance. If the T* is already non-NULL, it calls the callable immediately; otherwise it enqueues it for when the T* is set non-NULL. (This lets you "pounce" on the T* as soon as it becomes available, hence the name.) So if gMessageSystem were an LLPounceable<LLMessageSystem*>, LLMuteList's constructor could simply call gMessageSystem.callWhenReady() and relax: the callbacks would be registered either on LLMuteList construction or LLMessageSystem initialization, whichever comes later. LLPounceable comes with its very own set of unit tests. However, as of this commit it is not yet used in actual viewer code.
2015-05-22MAINT-5232: Clean up some dubious LLSingleton methods.Nat Goodspeed
Remove evil getIfExists() method, used by no one. Remove evil destroyed() method, used in exactly three places -- one of which is a test. Replace with equally evil instanceExists() method, which is used EVERYWHERE -- sigh.
2015-05-20Webprofile converted to coroutine.Rider Linden
Added JSON->LLSD converter Added corohandler for JSON data
2015-05-20MAINT-5232: Introduce SUBSYSTEM_CLEANUP() macroNat Goodspeed
and use it for existing LLSomeClass::cleanupClass() calls. This logs the fact of making the call, as well as making it.
2015-04-29Merge from viewer-releaseandreykproductengine
2015-04-27MAINT-5042 FIXED SL Viewer Closes Unexpectedly in specific area with high ↵ruslantproductengine
RenderVolumeLODFactor - fix for review - fix in buffer overrun detector
2015-04-24merge with viewer tools updateBrad Payne (Vir Linden)
2015-04-22MAINT-4653 WIP, DRTVWR-397 WIP - log output to file now includes tags. ↵Brad Payne (Vir Linden)
Request max 5 attachments per idle loop to reduce sim-side failures seen when requesting large numbers.
2015-04-15MAINT-4744: remove nonstandard #include from llfile.h.Nat Goodspeed
Changeset ffd264ca493c removed the whole llstdio_filebuf construct, which is what depended on the __gnu_cxx::stdio_filebuf<> extension. Now, even on Windows, ll[io]fstream very closely resembles std::[io]fstream. Since we no longer depend on that extension, we can remove its #include. This should (!) remove the last obstacle to building with libc++ on the Mac.
2015-04-15Strip down the Windows ll[io]fstream implementations to constructorsNat Goodspeed
and open() methods. The only remaining value added by ll[io]fstream over std::[io]stream is proper handling of non-ASCII pathnames, which can be done by deriving from std::[io]stream, converting pathname strings and passing them to the corresponding base-class methods. This is only necessary on Windows. On Posix, ll[io]fstream are already typedefs for std::[io]fstream. This change removes a significant volume of cruft from llfile.{h,cpp}.
2015-04-14Pull merge from lindenlab/viewer-tools-update (includes viewer-release)Merov Linden
2015-04-14Merged lindenlab/viewer-tools-update into defaultRider Linden
2015-04-14Merge with viewer-release and become 3.7.28andreykproductengine
2015-04-14merge changes for STORM-2113Oz Linden
2015-04-14minimal changes to compile on Xcode 6.2Oz Linden
2015-04-13merge changes for 3.7.27-releaseOz Linden
2015-04-13MergeRider Linden
2015-04-11STORM-2113 - uri parsing cleanup and fixesCinder
2015-04-10restore the ll[io]fstream because we need them as wrappers on Windows for ↵Oz Linden
wide char paths; on other platforms they are now just typedefs to the std classes
2015-04-09Merge lindenlab/viewer-tools-updateMerov Linden
2015-04-09Added LL_WARNS_IF to llerror.hRider Linden
If the coro is given something other than a map from the http then move the return into a body section. Changed windlight to use a coroutine and the new LLCore::Http libarary. Extra comments into Event Polling.
2015-04-07replace llifstream and llofstream with std::ifstream and std::ofstream ↵Oz Linden
respectively
2015-04-07convert llifstream and llofstream to std::ifstream and std::ofstream ↵Oz Linden
respectively
2015-04-07 MAINT-5023 FIXED URIparser crash in LLUrlEntryBase::urlToLabelWithGreyQueryMNikolenko ProductEngine
2015-04-02clarity and logging cleanupOz Linden
2015-04-02MAINT-5023 URIparser crash in LLUrlEntryBase::urlToLabelWithGreyQueryMnikolenko ProductEngine
2015-03-27MAINT-5019 FIXED Undesired http:// added to domains sent in chatMnikolenko ProductEngine
2015-03-24MAINT-5023 URIparser crash in LLUrlEntryBase::urlToLabelWithGreyQueryMnikolenko ProductEngine
2015-03-23merge changes for 3.7.26-releaseOz Linden
2015-03-23Reogranized some headers for GCC added <memory> to the linden_common.h for ↵Rider Linden
shared_ptr