[Opensim-dev] RFC: Moving default inventory creation from InventoryService to UserAccountService for viewer 2 initial appearance code

Justin Clark-Casey jjustincc at googlemail.com
Tue Feb 1 02:01:50 UTC 2011


Yes, I'll take care of the no default appearance case.

Only the inventory service will touch inventory data.  The service's existing AddFolder() and AddItem() calls will be 
used to setup default inventory, rather than this being hardcoded within IInventoryService.CreateUserInventory().  An 
AddFolderContent() could make this more efficient rather than making a call for every node.

As for co-ordination, if you look at UserAccountService.CreateUser() you'll see that this service is today co-ordinating 
user creation.  As well as creating the account, it sets the password on the authentication service, sets the home on 
the grid user service, calls the inventory service, etc.

But I agree that a metaservice could do this co-ordination instead.  UserCreationService perhaps?

I'll take a look at Wifi and may well borrow some ideas or code.

On 29/01/11 01:54, Melanie wrote:
> Please don't ignore the case where no default appearance is desired.
> Also, the UserAccount service should not directly access the
> inventory database. That would severely break the
> compartmentalization ROBUST is built on.
>
> The correct way is to have the inventory created by the inventory
> module, as it is now.
>
> The inventory module has no business populating that, and neither
> does the account service. This should be done by an external
> service, since it is only done on account creation.
>
> A meta service, like the LLLoginService, which takes the interfaces
> of both the inventory and avatar services and creates the inventory
> AND appearance and stores it in both would be the correct solution
> to this problem. It would be wrong (and get a -1) to shoehorn this
> into the existing services.
>
> ROBUST services are designed the Unix way. Do one thing, and do it
> well. The inventory service is not meant to access appearance, the
> user account service is not meant to access inventory, and so on.
>
> Such a meta service can then be loaded by the user server, a
> standalone or a web service like Wifi. And, obviously, it's
> configurable, so people who don't want to have a default appearance
> created, because they for instance have already working PHP code
> that would be messed up by preexisting data could just not configure
> it and see no change to current behavior.
>
> Melanie
>
> Justin Clark-Casey wrote:
>> Hi there,
>>
>> Today, I had an opportunity to do some more work on setting up default clothing/body parts for viewer 2 (this is in the
>> "viewer-2-initial-appearance" git branch).
>>
>> I've come to the realization (obvious in retrospect) that giving these items the default item IDs that the viewer wants
>> in the absence of any other appearance data is not going to work.  This is for the simple reason that item IDs are
>> primary keys and cannot be shared between avatars.
>>
>> Therefore, I will need to use a random item ID and use this to set up a default appearance at the same time as the
>> inventory items are created (currently, the appearance is only generated when the avatar first logs in).
>>
>> The user account service co-ordinates user account creation.  It seems that the sensible thing is to move default
>> inventory creation from the inventory service into the user account service.  Folder and item creation would take place
>> through existing add calls.
>>
>> The IInventoryService.CreateUserInventory() method would still be called but would only set up the very bare minimum
>> structure.  In the SL case, this is just the user's root "My Inventory" folder.
>>
>> The copy/pasted code for setting up estate managers in Scene.SetModuleInterfaces() also has to move.  The sensible thing
>> seems to be to expose a IUserAccountService.CreateUserAccount() call which is only available to standalones (as is
>> effectively currently the case).
>>
>> Commit 50254bf3 on this branch contains a rough version of this change.  The code to set up a default appearance with
>> random item IDs for default clothing/body parts has not yet been done.
>>
>> Comments?
>>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
>


-- 
Justin Clark-Casey (justincc)
http://justincc.org/blog
http://twitter.com/justincc



More information about the Opensim-dev mailing list