Commit Graph

32 Commits

Author SHA1 Message Date
Inusaito Sayori
b9ba472eda Merge branch 'master' of git://github.com/AlericInglewood/SingularityViewer
Conflicts:
	indra/newview/llspeakers.cpp
Compile fixes:
	indra/newview/llgroupmgr.cpp - uncomment new API for GroupBanDataResponder
2014-07-21 19:56:35 -04:00
Inusaito Sayori
ca1696823c French translation updates, by me~ 2014-07-14 03:20:48 -04:00
Aleric Inglewood
74dff061ff Support for new LL Responder API.
This adds mStatus, mReason and mContent to ResponderBase
and fills those in instead of passing it to member functions.
The added danger here is that now code can accidently try
to access these variables while they didn't already get a
correct value.

Affected members of ResponderBase (that now have less arguments):
decode_llsd_body, decode_raw_body, completedHeaders,
completed -> httpCompleted, result -> httpSuccess,
errorWithContent and error -> httpFailure.

New API:

ResponderBase::setResult
ResponderBase::getStatus()
ResponderBase::getReason()
ResponderBase::getContent()
ResponderBase::getResponseHeaders() (returns AIHTTPReceivedHeaders though, not LLSD)
ResponderBase::dumpResponse()
ResponderWithCompleted::completeResult
ResponderWithResult::failureResult (previously pubErrorWithContent)
ResponderWithResult::successResult (previously pubResult)

Not implemented:

getHTTPMethod() - use getName() instead which returns the class name of the responder.

completedHeaders() is still called as usual, although you can ignore
it (not implement in a derived responder) and call getResponseHeaders()
instead, provided you implement needsHeaders() and have it return true.

However, classes derived from ResponderHeadersOnly do not have
completedHeaders(), so they still must implement completedHeaders(),
and then call getResponseHeaders() or just access mReceivedHeaders
directly, as usual.
2014-07-12 18:29:44 +02:00
Drake Arconis
71d9084a95 Clean out old OGPX stuff 2014-03-01 17:34:22 -05:00
Inusaito Sayori
eb4b0d630f [MAINT-2287] The rest of the updates so far to outbox. 2014-02-06 14:53:13 -05:00
Aleric Inglewood
cf4c4a72c2 Added AICapabilityType and related.
This splits the AIPerService queue up into four queues: one for each
"capability type". On Second Life that doesn't make a difference in
itself for textures because the texture service only serves one
capability type: textures. Other services however can serve two types,
while on Avination - that currently only has one services for everything
- this really makes a difference because that single service now has
four queues.

More importantly however is that the administration of how many requests
are in the "pipeline" (from approving that a new HTTP request may be
added for given service, till curl finished it) is now per capability
type (or service/capabitity type pair actually). This means downloads of
a certain capability type (textures, inventory, mesh, other) will no
longer stall because unapproved requests cluttered the queue for a given
service.

Moreover, before when a request did finished, it would only look for a
new request in the queue of the service that just finished. This simple
algorithm worked when there were no 'PerSerice' objects, and only one
'Curl' queue: because if anything was queued that that was because there
were running requests, and when one of those running requests finished
it made sense to see if one of those queued requests could be added now.
However, after adding multiple queues, one for each service, it could
happen that service A had queued requests while only requests from
service B were actually running: only requests of B would ever finish
and the requests of A would be queued forever.

With this patch the algorithm is to look alternating first in the
texture request queue and then in the inventory request queue - or vice
versa, and if there are none of those, look for a request of a different
type. If also that cannot be found, look for a request in another
service. This is still not optimal and subject to change.
2013-05-21 23:34:23 +02:00
Aleric Inglewood
f9738cb611 Add getName() to every non-base class Responder object. 2013-01-11 04:15:55 +01:00
Aleric Inglewood
c0ac428179 Code cleanup
* Moved Responder stuff to LLHTTPClient.
* Renamed LLHTTPClient::Responder to LLHTTPClient::ResponderWithResult.
* Deleted LLHTTPClientAdapter and LLHTTPClientInterface.
* Renamed AICurlInterface::TransferInfo to AITransferInfo and moved it
  to llhttpclient.h
* Removed 'CURLcode code' argument from completed_headers.
2012-10-31 23:11:42 +01:00
Aleric Inglewood
3f1fb9a66e Add improved timeout handling for HTTP transactions.
Introduces AIHTTPTimeoutPolicy objects which do not just
specify a single "timeout" in seconds, but a plethora of
timings related to the life cycle of the average HTTP
transaction.

This knowledge is that moved to the Responder being
used instead of floating constants hardcoded in the
callers of http requests. This assumes that the same
timeout policy is wanted for each transaction that
uses the same Responder, which can be enforced is needed.

I added a AIHTTPTimeoutPolicy for EVERY responder,
only to make it easier later to tune timeout values
and/or to get feedback about which responder runs
into HTTP errors in debug output (especially time outs),
so that they can be tuned later. If we already understood
exactly what we were doing then most responders could
have been left alone and just return the default timeout
policy: by far most timeout policies are just a copy
of the default policy, currently.

This commit is not finished... It's a work in progress
(viewer runs fine with it though).
2012-10-05 15:53:29 +02:00
Shyotl
945c663359 Updated LLInventoryModelBackgroundFetch and LLInventoryModel(code migration) 2012-06-11 06:57:54 -05:00
Shyotl
ae7b12f230 Interim commit before diving into reworking the inventory panel. 2012-02-16 19:25:59 -06:00
Shyotl
a90d7bbb46 Innitial commit. Pulled minor changes out of bulk of changes comming for multi-wearables. 2012-02-16 12:00:38 -06:00
Shyotl
4c201a9b83 Inv fetch migrated from LLInventoryModel to LLInventoryModelBackgroundFetch singleton. 2012-01-20 19:09:44 -06:00
Shyotl
1cc33caaa3 Pulled llinventorymodel apart into llinventorymodel, llinventoryobserver and llinventoryfunctions 2012-01-12 18:57:10 -06:00
Shyotl
ced937cc46 Implemented CreateInventoryCategory sim caps support. (https://bitbucket.org/lindenlab/viewer-development/changeset/d327dcc8ae51) 2012-01-11 00:55:03 -06:00
Shyotl
4963a064f1 Removal of discarded inventory offers moved to deferred (idle) tick. Nested gInventory.notifyObservers() don't work. 2011-10-12 23:48:25 -05:00
Shyotl
36e0f667d5 gAgent.set/getInventoryRootID() changed to gInventory.set/getRootFolderID() 2011-10-12 02:29:12 -05:00
Shyotl
d40dcfa1cd Updated LLInventoryModel a bit. Safer cleanup, prevention of recursive notifyObservers calls, more sanity checks, added idleNotifyObservers that will call notifyObservers if stale flag(s) found. 2011-10-10 00:19:01 -05:00
Siana Gearz
6348635d3f Ïntroduced LLFolderType and LLViewerAssetType (by Shyotl) 2011-06-23 21:11:52 +02:00
Aleric Inglewood
fed8951e00 Merge remote-tracking branch 'shyotl/V2Renderer' into V2Renderer 2011-06-03 22:48:23 +02:00
Shyotl
49b893c806 Removed most OGPX related code. 2011-05-28 17:11:10 -05:00
Aleric Inglewood
13560e292e Added AIFetchInventoryFolder and more.
Added a new statemachine AIFetchInventoryFolder, which can be used
to fetch the contents of a folder by name or UUID.

Also added AIEvent (and one event,
AIEvent::LLInventoryModel_mIsAgentInvUsable_true, which is needed
for AIFetchInventoryFolder).

Fixed LLInventoryModel::sBackgroundFetchActive to correctly reflect
whether or not LLInventoryModel::backgroundFetch is added to
gIdleCallbacks.

Avoid duplicated entries in sFetchQueue.

Reset sFullFetchStarted in LLInventoryModel::stopBackgroundFetch to
allow for a renewed full fetch when some single-folder fetch stops it.

Added AIStateMachine::mQueued to make calling 'cont()' more robust:
calling cont() / idle() / cont() on a row would otherwise add a
statemachine twice to the active list, which would cause a crash
when it's killed.
2011-05-22 22:01:11 +02:00
Shyotl
332cfdb532 Updated llinventory to something closer to V2's implementation. Mostly just restructuring.
Most the changes are due to InventoryObjectList* changing to LLInventoryObject::object_list_t*, LLInventoryItem::II_FLAGS* changing to LLInventoryItemFlags::II_FLAGS* and also const'ing.
Certain perms for certain asset types(callcard&landmarks) have been laxed, as per LL's V2.
LLInventoryType now does lookups mostly though new lldictionary class.
LLLandmark using boost for callbacks, instead of custom class structure.
2011-04-28 01:43:44 -05:00
Siana Gearz
f9dcb1bb09 RLVa 1.1.2 to 1.1.3 upgrade. InvLinks + COF 2010-11-25 23:47:11 +01:00
Siana Gearz
5a67fcd623 Revert "THE BIGGIE."
This reverts commit ec55705bdd.

Conflicts:

	indra/newview/ascentprefsvan.cpp
	indra/newview/llinventorybridge.cpp
	indra/newview/skins/default/xui/en-us/panel_preferences_ascent_vanity.xml
2010-10-18 18:27:09 +02:00
Beeks
ec55705bdd THE BIGGIE.
Holy hell, this was an interesting one to implement. I wish I understood it better. Unfortunately I think this marks the end of trying to re-implement the Local Inventory for Temp and Local textures. It's just not feasible now that the entire inventory system has been whipped into a code shitstorm.

Signed-off-by: Beeks <HgDelirium@gmail.com>
2010-09-22 06:48:48 -04:00
Beeks
5ce4286fd7 f 2010-08-22 15:14:30 -04:00
Hazim Gazov
15b779fd00 add support in isDescendantOf for breaking out of recursive parenting cases 2010-08-07 23:41:18 +00:00
Hazim Gazov
bb8b4bda87 Added local assets floater, start work on a way to re-request inventory skeleton and meat from the server 2010-06-20 04:24:53 +00:00
Hazim Gazov
c32adc2304 Fixed several compile errors with VS2005 2010-04-23 02:10:18 -03:00
Hazim Gazov
a7463f4db5 fixed the damn header file 2010-04-21 23:56:50 -03:00
Hazim Gazov
7a86d01598 Imported existing code 2010-04-02 02:48:44 -03:00