Currently module loading is done ad-hoc. I propose creating a simple
loader class that leverages Mono.Addins (and perhaps the new .NET
addins when they become available in mono). Attached is a basic
patch for review that compiles into HEAD, but doesn't yet replace
any existing ad-hoc loaders.
"First stage in a major Script Engine refactor, that will result in the LSL implementaions ebing reconverged. Not there yet, but one major part is done."
Thank you, Melanie!
changes it wouldn't come up).
include embedded dialect specific sql files for nhibernate migrations
figure out how to get the raw db connection so that migrations can
work with nhibernate.
create initial migration for NHibernate + SQLite + Assets.
* This is the same string as printed out on the opensim region console at startup, so it should now include the svn revision number (if available)
* This dialog box takes an awful long time to come up on my local system - no idea why that is. However, that also seems to have been the case before this revision.
* The main purpose of this is to provide configuration options for ODE and other physics plug-ins that are advanced enough to be able to be configured.
* In theory, this should be a somewhat useless statistic since the user server will already have tried to use the inventory service to retrieve the avatar's skeleton. If this
fails, login is halted completely.
* Nonetheless I'm recording it anyway just to see whether it happens (yes, I'm too lazy to scan the logs...)
the attached patch set adds the (still work-in-progress but already
working) RestPlugin base class and the RestRegionPlugin code. we are using
XML serialization.
currently working:
GET /admin/regions/ -> returns UUID list of known regions
GET /admin/regions/<UUID> -> returns detailed region information
we'll be adding support for POST/DELETE/PUT and also for
/admin/regions/<UUID>/name etc.
* If the status cannot be retrieved, then the region startup will terminate.
* The aim of this is for earlier detection of situations where the region can send messages out but cannot accept incoming requests (often due to firewall issues)
* This is currently an extremely simplistic check which completely trusts whatever http uri is given by the region
* This contact may be problematic, though since the user service needs to be able to contact the region http uri, it doesn't seem unreasonable for the grid to have to be able to do so too at this stage
* This change will require a prebuild
* Added shell of new Python scripting engine. Similar in design to the one used by Rex, but will be structured at a region rather than object level, also is a region module.
* Interfaces and methods have been defined for basic operation, however a replacement grid module is required to share region URIs with neighbours for this module to work.
* Tackling that next.
This is a module which allows you to periodically export a serialised version of your region to a SVN repository and store it there. It is still a work in progress and is currently disabled and incomplete, but some of the functionality is demonstratable.
* Enjoy.
* Added the new mapper to the mapper factory
* Made choice of mapper configurable
* This means, in hteory, that we can persist avatar appearance on MSSQL as well
* This module more or less crashes every region in the instance if you enable it by moving it from local /bin to global /bin
* But hey, it crashes in lots of interesting ways.
* This will show the packets waiting in each queue for each client logged into a region server
* These are displayed using 'show stats' on the region command line
* This is in pursuit of a memory leak.
* This will require a prebuild
* Patch 1 stops OpenSim.32BitLaunch.exe and ScriptEngines/Default.lsl being deleted on nant clean
* Patch 2 resolves a building problem with pCampBot
* This will require a prebuild rerun
To use, see the appearance section in opensim.ini.example, set "persist = true", then add the correct connection string for your database.(see mysql-AvatarAppearance.sql in share folder for a example of the table mysql table structure).
This could possible be used in a very small grid, but would mean each region server would need to connect to the same mysql database.
But the work to move the code to one of the grid servers shouldn't be too much.
* You can type 'stats' at the REGION# prompt to get this information in grid or standalone mode
* Don't take these numbers as gospel yet, since for some reason textures displayed from inventory which require downloading from the server are being recorded as assets
rather than textures
* But I don't have any reason to believe they aren't broadly accurate.
* I've put these in so I can tell whether the high memory usage on regions is down to the asset/texture cache
* This will require a prebuild
* DEV: Only adds needed to be implemented since, as far as I can tell, assets cached are currently never released. For my part, seeing large cache memory numbers will
provoke me to think about doing something about this.
* DEV: Now switched to using a singleton to get the stats reporters rather than threading the object through various layers
* DEV: Will refactor the other server stats reporters to do this in one of the next commits
* The hooks are still plugged in too high at the asset server, but then next layer down is the database and this may be refactored soon.
* This change will requires a prebuild
* Interestingly, OpenSim builds fine on mono under nant without these references (as nulls are passed in instead of the objects)
* But it appears other systems (at least VS2008) complain if the references aren't present
* Many thanks to Grumly57 for catching this!
* Typing 'stats' on the command line will given total number of successful logins today and yesterday
* A little bit more to come, probably
* Refactoring will follow next
for now. It doesn't build on new mono at the moment, and
isn't currently used. Please make sure this functions on
mono 1.2.6 prior to adding it back in for the main tree.
* Added PrimitiveBaseShapeTableMapper to show how it's done
NOTE: Nothing actually works yet - this code should be considered more of educational value until it's all wired together
* Added conceptual TribalMedia.Framework.Data library; this is meant as a generic database layer abstraction library, that should be specialized into OpenSim.Framework.Data
* OpenSim.Framework.Data should subclass FieldMappers to extend LLVector3 and LLQuaternions
Loads of things has been put into interfaces instead of the specific class.
We are now one step closer to ScriptServer, and its very easy to implement new script languages. Just a few lines required to make them a OpenSim script module with all its glory.
namespace to mirror what is done with MySQL. This will require a
configuration change for people using SQLite for prims which is given
as an example in OpenSim.ini.example
*Added ability to load regioninfo remotely from a webserver from a single file. See share/RegionLoading/HOWTO_REMOTE_REGION_LOADING.txt for more info and an example file.
Currently it supports a barebones scheme for specifying the path of the resource and querying asynchroneously. POST method is still wacky and a good solid scheme for handling timeout still remain.
* Moved InventoryData to Framework.Types/InventoryItemBase.cs
* Moved UserData to Framework.Interfaces/IUserData.cs
* Moved UserProfileData to Framework/Types/UserProfileData.cs
* Deleted ass-backwards Framework dependency on Framework.Data (now it's the other way round)
* Changed some namespaces to reflect file structure
* Normalized 'change-region' so (almost) all commands are context sensitive (use 'root' or '..' to set 'all scenes' context)
* 'terrain-sim' is thusly obsolete, use 'change-region', followed by 'terrain'
* Introduced SceneManager to administrate operations on group of scenes and moved relevant funcs there.
* In it, there's a ForEach(Action<Scene>) that either passes all scenes, or only current scene depending on context.
* Changed default prim backup (save-xml/load-xml) xml to "prim-backup.xml"
* Changed Disable/EnablePermissions to BypassPermissions = true/false;
Also:
* Removed unused and non-existent project ref
Added preliminary IRegionModule interface.
Also have a work in progress way of Modules registering optional API methods (kind of like Apache optional functions). But there must be a cleaner/nicer way in c# of doing these than the current way.
Added three work in progress modules: ChatModule (simple handles in world chat, but by moving this to a module, we could support other types of chat modules, ie like a irc - opensim bridge module. ) , AvatarProfilesModule and XferModule.
Moved most of the code from Scene.ModifyTerrain() into the BasicTerrain library, as the start of trying to make that more modular.
Stopped Child agents showing up as part of the "show users" command.
Deleted the GridInterfaces projects, and for now moved the old local asset server into Framework.Communications, as we prepare to rewrite the asset cache and asset server.
Deleted Framework.manager as I am sure this is no longer in use.
In standalone mode, if you have account authenticate turned on (setting in opensim.ini) then when you create a new account, a set of inventory is created for that account and stored in database (currently only a set of empty folders). Then during login the database is search for that set and sent to the client in the login response.
More functions will be added soon, like creating new folders (and a bit later items) from the client inventory window.
Temporary have had to rename the OpenSim.DataStore.MonoSqlite project to OpenSim.DataStore.MonoSqlite1, as I'm not sure what was done to stop the old project name being included in the VS2005 solution.
Also some config changes:
OpenSim now has a INI (OpenSim.ini) file that it will read some config settings from (if the ini file exists).
Added Mono.Data.SqliteClient.dll so that we can use the same code for sqlite on Windows and mono/linux. (from what I can tell Mono class libraries have a MIT license so there should be no problems with us including this dll).
So now to get the basic prim storage working , you need to first create the sqlite database file from the sqlite3-prims.sql in share directory. Then in the OpenSim.ini file, change the storage_plugin so it points to OpenSim.DataStore.MonoSqlite1.dll (storage_plugin = OpenSim.DataStore.MonoSqlite1.dll). Then in your region.xml files change the DataStore value so it is the name of your database file (at the moment you need a different sqlite3 database file for each region).
* NetworkServersInfo settable without config file
* DefaultHomeLoc throws if getted before setted
* Removed nonsensical sandbox distinction
* Refactored default config file creation
* Some more small refactorings on shapes
Now using the Nini configuration library (suggest we look into using this for the rest of our config handling, as it provides a standard interface for command line args, INI files, Xml files, .NET config files, and windows registry).
One IMPORTANT change is that to TO START GRIDMODE , you need to now use -gridmode=true .
Also need someone to test it under mono. (there is a dll that has been compiled under mono available, just hoping that we don't have to deal with separate dlls for windows and linux.
*Right now, values are not saved back to the remote server, but that will be changed
*Removed some warnings from invalid references that were not used anyways
* Fixed some of the problems with crossing regions when flying: you should no longer sink to ground level when crossing (should keep roughly your right height). Should no longer sometimes get sent back to the centre of the current region when attempting to border cross. But instead sometimes you will find you avatar stop at the edge of region and you will need to start moving again to retry the crossing (which should then work). This code is partly based on Babblefrog's issue #212 patch. [I think I have some ideas of how to solve the stopping at edges problem, just want to get the inventory code done first]
* Capabilities code has now been moved to the OpenSim.Framework.Communications project as some of the caps code will be tightly tied to inventory/asset handling and it was causing a two way reference problem when it was in its own project/dll.
This is a Big commit as I was going to keep my inventory work local until I had it in a working state, in case it brakes anything, but its getting harder to keep in sync with svn.