[Opensim-dev] Splitting IUserService

Michael Wright michaelwri22 at yahoo.co.uk
Sat Jun 28 21:38:13 UTC 2008


I guess I should have waited longer for more replies, but as I had a hour or two today that I decided I was going to do some opensim work in. I decided to go for it and make those changes. So communications manager now has a protected IAvatarService AvatarService; 

The actually implementation in the current communication managers are unchanged, those requests are sent to the user server.

While I was working on it, I also started to add support for multiple inventory Services/servers. So it should now actually be possible, to set different users up to use different inventory servers. 

The basic way to acheive/test this is:

-Start with a grid set up as normal.

-Startup another inventory server, generally on different computer to the original. Although it would be possible to have them running on them same computer, if they were "given" different hostnames/IP addresses. Even "http://localhost:8004" and "http://127.0.0.1:8005", should work. 

-On the region(s), use the console command "Add-InventoryHost <hosturl>" to register the extra server.

-Now at the moment, the only way to do the last stage, is to manually edit the user server database. And in the userprofiles for the users you want to use the other inventory server, set that url in the "userInventoryURI" field. (on the urls, you need to make sure there ISN'T a / at the end )

Now if it works, the next time that user logs in, the Login service will contact the new inventory server, asking for their inventory. And unless the database has been copied to that server/ or it shares the db with the original one, then it won't be found, so a new inventory set will be created. And once they are into the region(s), then all inventory functions should go to the new inventory server.

All of which is most likely not that much use at the moment, but hopefully it will be the first small step towards allowing people to visit the various opensim grids and taking their inventory with them. Although of course supporting multiple asset servers is a lot more work than inventory was. 

Melanie <melanie at t-data.com> wrote: +1. Sounds like a plan to me.

Melanie


Michael Wright wrote:
> Does anyone have any objections to splitting the IUserService interface, so that the Avatar Appearance and attachments are in their own interface IAvatarService ?
> 
> I really don't think we should be coupling things like we are. I'm not saying that these functions have to move off the User Server. Just on the region side, we move them into their own interface, so that if someone wants those functions to be on a different server, they can change the url of the server to be different to the user server with minor code changes. 
> 
> When I think about the various Servers, I generally think of the User server as holding account infomation. The Grid Server as being the general manager of the "grid". And the Inventory and Asset servers as the general datastores. 
> 
> So to fit in with my view, the avatar appearance data would fit better on the Inventory server or even a separate server that was part of the datastore group. This is so that we could have one central User Server, but a number of Inventory and Asset servers. Each user's in-world data could be on a different set of those.
> 
> As I've said before, I really think we should have a system that allows the various backend functions to be where ever a grid admin thinks is best. But thats still a dream. 
> 
> But we can do a small change that would allow a different url to be set for the Avatar services, if a application required it.
> 
> So what I'm suggesting is we add a new interface to the CommunicationsManager, like:
> 
> public Interface IAvatarService
> {
>         AvatarAppearance GetUserAppearance(LLUUID user);
> 
>         void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance);
> 
>         void AddAttachment(LLUUID user, LLUUID attach);
> 
>         void RemoveAttachment(LLUUID user, LLUUID attach);
> 
>         List GetAttachments(LLUUID user);
> }
> 
> The OSGrid implementation could be exactly like it is now, and send the requests to the user server. I'm not even talking about adding a new setting to the ini file, but just leaving the code so it uses the UserServer url.
> 
> So its really a minor change, but does decouple these functions from the more general user account functions. 
> 
>        
> ---------------------------------
>  Not happy with your email address?
>   Get the one you really want - millions of new email addresses available now at  Yahoo!
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
Opensim-dev at lists.berlios.de
https://lists.berlios.de/mailman/listinfo/opensim-dev


       
---------------------------------
 Not happy with your email address?
  Get the one you really want - millions of new email addresses available now at  Yahoo!
       
---------------------------------
 Not happy with your email address?
  Get the one you really want - millions of new email addresses available now at  Yahoo!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20080628/760e8c2d/attachment-0001.html>


More information about the Opensim-dev mailing list