Henri, thank you for the detailed response. I suspected the protocol was defined that way: attempting to make the viewer responsible for managing the server's database. Bad design, but typical of early LL when everything was a single project and there was no separation between the client and server codebases. (Statement not intended to start an anti-LL flame, let's keep on topic! :) )
That explains the information I was getting: a single RemoveInventoryFolder for purging a single empty folder, and a mix of RemoveInventoryFolder and PurgeInventoryDescendents for purging a hierarchy. I was originally expecting a single PurgeInventoryFolder for purging a single folder no matter whether it had children or not, and a single PurgeInventoryDescendents upon emptying the trash. That would have been clean and simple, the serverside doing all the dirty work of cleaning up the hierarchy. Now I know what to expect, I can make sure to handle it. Anyway, thanks again! Ricky Cron Stardust On Mon, Oct 5, 2015 at 1:40 AM, Henri Beauchamp <sl...@free.fr> wrote: > On Sun, 4 Oct 2015 21:50:39 -0700, Ricky wrote: > > > Just a quickie, trying to avoid digging through the viewer code myself to > > be sure: > > When a folder that is in the trash is purged, what calls to the server > does > > the client make? > > > > I'm debugging an OpenSim derivative, > > I don't know what you are trying to debug, but just in case, be aware > that at least one such "derivatives", in use on OSGrid, does not obey > the purge trash messages sent by the viewer (it looks like the trash > gets emptied, but on relog, the purged items will reappear in it): > it's totally weird and IMO a pure non-sense but in OSGrid, if you want > to purge your trash, you must login into their web site and purge it > from there... > I myself lost quite some time (GRRRR !) trying to figure out why I > couldn't purge my trash (and searched pointlessly for a bug in my > viewer), till I found out this totally quirky (and unique: I didn't > encounter it on any other grid) "feature" of OSGrid. > > > and just noticed that it seems that > > there's a difference in the calls when the folder being purged has > children > > and when it doesn't. Trying to confirm that there is an actual > difference > > or if something else in this complex system is interacting... > > The relevant call in the viewer code is remove_inventory_category() > (in llviewerinventory.cpp). > When connected to a non-AISv3 (which is the case for OpenSIM), it > either sends to the server a single RemoveInventoryFolder UDP message > when the folder is empty or, for each child folder (recursively, via > the destructor of the LLRemoveCategoryOnDestroy class), a > PurgeInventoryDescendents UDP message (via purge_descendents_of()) > followed with a RemoveInventoryFolder UDP message; the process is > recursively repeated till the purged inventory folder is empty (at > which point a last RemoveInventoryFolder message is sent for the > purged parent folder). > > Henri. > _______________________________________________ > Policies and (un)subscribe information available here: > http://wiki.secondlife.com/wiki/OpenSource-Dev > Please read the policies before posting to keep unmoderated posting > privileges >
_______________________________________________ Policies and (un)subscribe information available here: http://wiki.secondlife.com/wiki/OpenSource-Dev Please read the policies before posting to keep unmoderated posting privileges