summaryrefslogtreecommitdiff
path: root/indra/newview/llmediadataclient.cpp
AgeCommit message (Collapse)Author
2009-11-24Code review feedback:Rick Pasetto
Don't re-sort when adding to the queue: it isn't really necessary since we sort every time we pull off the queue.
2009-11-24DEV-41998 - refactor mediadataclient to use a std::list, and re-sort every ↵Rick Pasetto
time an item is pulled off the queue Review #43 This change refactors mediadataclient to no longer use a PriorityQueue (which sorts only on insertion), but rather just use a std::list which is re-sorted on insert, and also when "popped" (at the time the queue timer goes off). Also implemented a unit test to make sure re-sorting occurs on timer tick.
2009-11-20Clean up some loggingRick Pasetto
2009-11-19Made LLMediaDataClient not send requests on behalf of objects that are ↵Monroe Linden
marked as dead. When LLMediaDataClient::QueueTimer::tick() encounters an object at the head of the queue that's dead, it will now remove that object and loop, instead of sending a request and waiting for the tick timer to fire again. Added an isDead() function to LLMediaDataClientObject, and an additional unit test that verifies the handling of dead objects.
2009-11-10FIX DEV-41991: do not allow media settings panel to come up if media data is ↵Rick Pasetto
in flight Review #33 This change marks the current selection "not editable" if any objects in the selection are currently "in flight" (i.e. their media data has not been fetched yet, or is in the process of being fetched). This involved adding API to LLMediaDataClient to query whether an object is in the process of being fetched (i.e. in the queue). I've added a unit test for this new API.
2009-10-26Add some logging to perhaps discern more information about reported crashesRick Pasetto
2009-10-19Compress logging of media data (but still have it)Rick Pasetto
2009-10-19mergeSteve Bennetts
2009-10-13Another attempt at fixing unit test, this one is weirder.Rick Pasetto
Don't schedule the queue timer in the tick() of the retry timer. Instead, schedule it in the RetryTimer's destructor. This is an artifact of how the LLEventTimer's loop is handled.
2009-10-12Add some more logging to help triage media client problemsRick Pasetto
2009-10-12merge of login-apipalange
2009-10-09Unit tests for LLMediaDataClientRick Pasetto
This required a bit of refactoring of LLMediaDataClient: - Created LLMediaDataClientObject ABC, which now has a concrete impl in LLVOVolume - Created unit test with 6 tests (for now), testing - LLObjectMediaDataClient::fetchMedia() - LLObjectMediaDataClient::updateMedia() - LLObjectMediaNavigateClient::navigate() - queue ordering - retries - nav bounce back - Also ensures that ref counting works properly (this is important, because ownership is tricky with smart pointers put into queues, peeled off into timers that fire and auto destruct, and HTTP responders that also auto-destruct) - Had to fix LLCurl::Responder's stub, which was not initializing the ref count to 0, causing the ref counting tests to fail (boy, that was hard to find!). Reviewed by Callum
2009-10-07Post-merge cleanup to get things building again.brad kittenbrink
2009-10-07DEV-39168 - bounce back to the current URL (or, the home URL if current URL ↵Rick Pasetto
is "") if the server denies navigation This refactors some of the bounceBack code into LLVOVolume. It also changes an important rule: the edit panel now *will* send the current URL to the server when you hit "OK". This change was done so that if autoplay is on, we make sure the server gets the right data.
2009-10-06DEV-40896: Don't iteratively pop() the request queue on destroy(). This ↵Rick Pasetto
just logs now and deletes the queue.
2009-10-05Back out changes accidentally checked in with last commitRick Pasetto
2009-10-05FIX DEV-40877: ignore changes from "bad" objects which have an invalid media URLRick Pasetto
2009-10-05DEV-40853: don't bring up a dialog on HTTP errors in the media serviceRick Pasetto
2009-10-05merge with latest from lindenlab/svn-imports-viewer-20Mark Palange (Mani)
2009-10-05Disable "bounceBack" if nav permissions are refusedRick Pasetto
2009-10-05DEV-40650: Refactor llmediadataresponder and llmediadatafetcher into a ↵Rick Pasetto
single reusable class CC Review #7 (monroe) LLMediaDataResponder and LLMediaDataFetcher were helpful classes that interacted with each other, but they were not general enough to cleanly be used for all media service interaction. This change refactors these classes into one (in fact, it is closer to a complete rewrite): LLMediaDataClient. This class has the following design points: - You subclass from it when you want to specialize the responder, and then subclass from LLMediaDataClient::Responder if desired - It has a few inner classes: - LLMediaDataClient::Request, which now holds all of the data pertaining to a request, including retry counts - LLMediaDataClient::Responder, which is now the LLHTTPClient::Responder - LLMediaDataClient::PriorityQueue, which is now a STL priority_queue of Request objects. - LLMediaDataClient::QueueTimer, which is the timer that fires to peel off queue items - LLMediaDataClient::Responder::RetryTimer, which is the timer that is used when 503 errors are received. The encapsulation of these inner classes is a lot cleaner and better reflects the scope of their responsibilities. By and large, the logic hasn't really changed much. However, now there are two subclasses of LLMediaDataClient: one for the ObjectMedia cap and the other for the ObjectMediaNavigate cap. (I decided it was overkill to make three subclasses, one each for GET, UPDATE, and NAVIGATE, but we could still do that). LLVOVolume now instantiates both of these classes as statics (and destroys them on shutdown). They now have very simple API: - LLObjectMediaDataClient::fetchMedia(LLVOVolume*) fetches the media for the given object - LLObjectMediaDataClient::updateMedia(LLVOVolume*) sends an UPDATE of the media from the given object - LLObjectMediaNavigateClient::navigate(LLVOVolume*, U8 texture_index, const std::string &url) navigates the given face (texture_index) on the given object to the given url.