* debugged quite a lot of db-related strangeness and various refactoring goofs
parent
497ab5d7ab
commit
47ea453b32
|
@ -89,7 +89,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
return (this.phyScene);
|
return (this.phyScene);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private LandManager m_LandManager;
|
private LandManager m_LandManager;
|
||||||
public LandManager LandManager
|
public LandManager LandManager
|
||||||
{
|
{
|
||||||
|
@ -441,15 +441,8 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void LoadPrimsFromStorage()
|
public void LoadPrimsFromStorage()
|
||||||
{
|
{
|
||||||
try
|
MainLog.Instance.Verbose("World.cs: LoadPrimsFromStorage() - Loading primitives");
|
||||||
{
|
this.localStorage.LoadPrimitives(this);
|
||||||
MainLog.Instance.Verbose("World.cs: LoadPrimsFromStorage() - Loading primitives");
|
|
||||||
this.localStorage.LoadPrimitives(this);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
MainLog.Instance.Warn("World.cs: LoadPrimsFromStorage() - Failed with exception " + e.ToString());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -38,7 +38,7 @@ using OpenSim.Framework;
|
||||||
|
|
||||||
namespace OpenSim.Region.Environment.Scenes
|
namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
public abstract class SceneBase : IWorld
|
public abstract class SceneBase : IWorld
|
||||||
{
|
{
|
||||||
public Dictionary<LLUUID, EntityBase> Entities;
|
public Dictionary<LLUUID, EntityBase> Entities;
|
||||||
protected ulong m_regionHandle;
|
protected ulong m_regionHandle;
|
||||||
|
@ -47,7 +47,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
public TerrainEngine Terrain;
|
public TerrainEngine Terrain;
|
||||||
|
|
||||||
public string m_datastore;
|
protected string m_datastore;
|
||||||
public ILocalStorage localStorage;
|
public ILocalStorage localStorage;
|
||||||
|
|
||||||
protected object m_syncRoot = new object();
|
protected object m_syncRoot = new object();
|
||||||
|
@ -76,44 +76,37 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// <returns>Successful or not</returns>
|
/// <returns>Successful or not</returns>
|
||||||
public bool LoadStorageDLL(string dllName)
|
public bool LoadStorageDLL(string dllName)
|
||||||
{
|
{
|
||||||
try
|
Assembly pluginAssembly = Assembly.LoadFrom(dllName);
|
||||||
|
ILocalStorage store = null;
|
||||||
|
|
||||||
|
foreach (Type pluginType in pluginAssembly.GetTypes())
|
||||||
{
|
{
|
||||||
Assembly pluginAssembly = Assembly.LoadFrom(dllName);
|
if (pluginType.IsPublic)
|
||||||
ILocalStorage store = null;
|
|
||||||
|
|
||||||
foreach (Type pluginType in pluginAssembly.GetTypes())
|
|
||||||
{
|
{
|
||||||
if (pluginType.IsPublic)
|
if (!pluginType.IsAbstract)
|
||||||
{
|
{
|
||||||
if (!pluginType.IsAbstract)
|
Type typeInterface = pluginType.GetInterface("ILocalStorage", true);
|
||||||
|
|
||||||
|
if (typeInterface != null)
|
||||||
{
|
{
|
||||||
Type typeInterface = pluginType.GetInterface("ILocalStorage", true);
|
ILocalStorage plug = (ILocalStorage)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
||||||
|
store = plug;
|
||||||
|
|
||||||
if (typeInterface != null)
|
store.Initialise(this.m_datastore);
|
||||||
{
|
break;
|
||||||
ILocalStorage plug = (ILocalStorage)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
|
|
||||||
store = plug;
|
|
||||||
|
|
||||||
store.Initialise(this.m_datastore);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
typeInterface = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typeInterface = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pluginAssembly = null;
|
|
||||||
this.localStorage = store;
|
|
||||||
return (store == null);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
MainLog.Instance.Warn("World.cs: LoadStorageDLL() - Failed with exception " + e.ToString());
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
pluginAssembly = null;
|
||||||
|
this.localStorage = store;
|
||||||
|
return (store == null);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Send the region heightmap to the client
|
/// Send the region heightmap to the client
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -150,7 +143,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="agentID"></param>
|
/// <param name="agentID"></param>
|
||||||
public abstract void RemoveClient(LLUUID agentID);
|
public abstract void RemoveClient(LLUUID agentID);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -190,6 +183,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,10 +22,6 @@ namespace SimpleApp
|
||||||
{
|
{
|
||||||
class Program : RegionApplicationBase, conscmd_callback
|
class Program : RegionApplicationBase, conscmd_callback
|
||||||
{
|
{
|
||||||
public MyWorld m_scene;
|
|
||||||
private SceneObject m_sceneObject;
|
|
||||||
public MyNpcCharacter m_character;
|
|
||||||
|
|
||||||
protected override LogBase CreateLog()
|
protected override LogBase CreateLog()
|
||||||
{
|
{
|
||||||
return new LogBase(null, "SimpleApp", this, false);
|
return new LogBase(null, "SimpleApp", this, false);
|
||||||
|
@ -40,20 +36,21 @@ namespace SimpleApp
|
||||||
LocalAssetServer assetServer = new LocalAssetServer();
|
LocalAssetServer assetServer = new LocalAssetServer();
|
||||||
assetServer.SetServerInfo("http://localhost:8003/", "");
|
assetServer.SetServerInfo("http://localhost:8003/", "");
|
||||||
|
|
||||||
AssetCache m_assetCache = new AssetCache(assetServer);
|
m_assetCache = new AssetCache(assetServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Run()
|
public void Run()
|
||||||
{
|
{
|
||||||
base.StartUp();
|
base.StartUp();
|
||||||
|
|
||||||
CommunicationsLocal m_commsManager = new CommunicationsLocal(m_networkServersInfo, m_httpServer);
|
m_commsManager = new CommunicationsLocal(m_networkServersInfo, m_httpServer);
|
||||||
|
|
||||||
ScenePresence.PhysicsEngineFlying = true;
|
ScenePresence.PhysicsEngineFlying = true;
|
||||||
|
|
||||||
IPEndPoint internalEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9000);
|
IPEndPoint internalEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9000);
|
||||||
RegionInfo regionInfo = new RegionInfo(1000, 1000, internalEndPoint, "localhost");
|
RegionInfo regionInfo = new RegionInfo(1000, 1000, internalEndPoint, "localhost");
|
||||||
|
regionInfo.DataStore = "simpleapp_datastore.yap";
|
||||||
|
|
||||||
UDPServer udpServer;
|
UDPServer udpServer;
|
||||||
|
|
||||||
Scene scene = SetupScene(regionInfo, out udpServer);
|
Scene scene = SetupScene(regionInfo, out udpServer);
|
||||||
|
@ -64,10 +61,10 @@ namespace SimpleApp
|
||||||
shape.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
|
shape.Scale = new LLVector3(0.5f, 0.5f, 0.5f);
|
||||||
LLVector3 pos = new LLVector3(138, 129, 27);
|
LLVector3 pos = new LLVector3(138, 129, 27);
|
||||||
|
|
||||||
m_sceneObject = new MySceneObject(scene, scene.EventManager, LLUUID.Zero, scene.PrimIDAllocate(), pos, shape);
|
SceneObject m_sceneObject = new MySceneObject(scene, scene.EventManager, LLUUID.Zero, scene.PrimIDAllocate(), pos, shape);
|
||||||
scene.AddEntity(m_sceneObject);
|
scene.AddEntity(m_sceneObject);
|
||||||
|
|
||||||
m_character = new MyNpcCharacter();
|
MyNpcCharacter m_character = new MyNpcCharacter();
|
||||||
scene.AddNewClient(m_character, false);
|
scene.AddNewClient(m_character, false);
|
||||||
|
|
||||||
m_log.WriteLine(LogPriority.NORMAL, "Press enter to quit.");
|
m_log.WriteLine(LogPriority.NORMAL, "Press enter to quit.");
|
||||||
|
@ -107,7 +104,7 @@ namespace SimpleApp
|
||||||
{
|
{
|
||||||
Program app = new Program();
|
Program app = new Program();
|
||||||
|
|
||||||
app.StartUp();
|
app.Run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,22 +64,15 @@ namespace OpenSim.Region.GridInterfaces.Local
|
||||||
this._assetRequests = new BlockingQueue<ARequest>();
|
this._assetRequests = new BlockingQueue<ARequest>();
|
||||||
yapfile = File.Exists("regionassets.yap");
|
yapfile = File.Exists("regionassets.yap");
|
||||||
|
|
||||||
MainLog.Instance.Verbose( "Local Asset Server class created");
|
MainLog.Instance.Verbose("Local Asset Server class created");
|
||||||
try
|
db = Db4oFactory.OpenFile("regionassets.yap");
|
||||||
{
|
MainLog.Instance.Verbose("Db4 Asset database creation");
|
||||||
db = Db4oFactory.OpenFile("regionassets.yap");
|
|
||||||
MainLog.Instance.Verbose( "Db4 Asset database creation");
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
db.Close();
|
|
||||||
MainLog.Instance.WriteLine(LogPriority.MEDIUM, "Db4 Asset server :Constructor - Exception occured");
|
|
||||||
MainLog.Instance.Warn(e.ToString());
|
|
||||||
}
|
|
||||||
if (!yapfile)
|
if (!yapfile)
|
||||||
{
|
{
|
||||||
this.SetUpAssetDatabase();
|
this.SetUpAssetDatabase();
|
||||||
}
|
}
|
||||||
|
|
||||||
this._localAssetServerThread = new Thread(new ThreadStart(RunRequests));
|
this._localAssetServerThread = new Thread(new ThreadStart(RunRequests));
|
||||||
this._localAssetServerThread.IsBackground = true;
|
this._localAssetServerThread.IsBackground = true;
|
||||||
this._localAssetServerThread.Start();
|
this._localAssetServerThread.Start();
|
||||||
|
@ -122,7 +115,7 @@ namespace OpenSim.Region.GridInterfaces.Local
|
||||||
{
|
{
|
||||||
if (db != null)
|
if (db != null)
|
||||||
{
|
{
|
||||||
MainLog.Instance.Verbose( "Closing local asset server database");
|
MainLog.Instance.Verbose("Closing local asset server database");
|
||||||
db.Close();
|
db.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,116 +156,106 @@ namespace OpenSim.Region.GridInterfaces.Local
|
||||||
|
|
||||||
private void SetUpAssetDatabase()
|
private void SetUpAssetDatabase()
|
||||||
{
|
{
|
||||||
try
|
MainLog.Instance.Verbose("Setting up asset database");
|
||||||
{
|
|
||||||
|
|
||||||
MainLog.Instance.Verbose( "Setting up asset database");
|
AssetBase Image = new AssetBase();
|
||||||
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
|
||||||
|
Image.Name = "Bricks";
|
||||||
|
this.LoadAsset(Image, true, "bricks.jp2");
|
||||||
|
AssetStorage store = new AssetStorage();
|
||||||
|
store.Data = Image.Data;
|
||||||
|
store.Name = Image.Name;
|
||||||
|
store.UUID = Image.FullID;
|
||||||
|
db.Set(store);
|
||||||
|
db.Commit();
|
||||||
|
|
||||||
AssetBase Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
|
||||||
Image.Name = "Bricks";
|
Image.Name = "Plywood";
|
||||||
this.LoadAsset(Image, true, "bricks.jp2");
|
this.LoadAsset(Image, true, "plywood.jp2");
|
||||||
AssetStorage store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
|
||||||
Image.Name = "Plywood";
|
Image.Name = "Rocks";
|
||||||
this.LoadAsset(Image, true, "plywood.jp2");
|
this.LoadAsset(Image, true, "rocks.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
|
||||||
Image.Name = "Rocks";
|
Image.Name = "Granite";
|
||||||
this.LoadAsset(Image, true, "rocks.jp2");
|
this.LoadAsset(Image, true, "granite.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
|
||||||
Image.Name = "Granite";
|
Image.Name = "Hardwood";
|
||||||
this.LoadAsset(Image, true, "granite.jp2");
|
this.LoadAsset(Image, true, "hardwood.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
|
Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
|
||||||
Image.Name = "Hardwood";
|
Image.Name = "Prim Base Texture";
|
||||||
this.LoadAsset(Image, true, "hardwood.jp2");
|
this.LoadAsset(Image, true, "plywood.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000006");
|
||||||
Image.Name = "Prim Base Texture";
|
Image.Name = "Map Base Texture";
|
||||||
this.LoadAsset(Image, true, "plywood.jp2");
|
this.LoadAsset(Image, true, "map_base.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
Image = new AssetBase();
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000006");
|
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000007");
|
||||||
Image.Name = "Map Base Texture";
|
Image.Name = "Map Texture";
|
||||||
this.LoadAsset(Image, true, "map_base.jp2");
|
this.LoadAsset(Image, true, "map1.jp2");
|
||||||
store = new AssetStorage();
|
store = new AssetStorage();
|
||||||
store.Data = Image.Data;
|
store.Data = Image.Data;
|
||||||
store.Name = Image.Name;
|
store.Name = Image.Name;
|
||||||
store.UUID = Image.FullID;
|
store.UUID = Image.FullID;
|
||||||
db.Set(store);
|
db.Set(store);
|
||||||
db.Commit();
|
db.Commit();
|
||||||
|
|
||||||
Image = new AssetBase();
|
|
||||||
Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000007");
|
|
||||||
Image.Name = "Map Texture";
|
|
||||||
this.LoadAsset(Image, true, "map1.jp2");
|
|
||||||
store = new AssetStorage();
|
|
||||||
store.Data = Image.Data;
|
|
||||||
store.Name = Image.Name;
|
|
||||||
store.UUID = Image.FullID;
|
|
||||||
db.Set(store);
|
|
||||||
db.Commit();
|
|
||||||
|
|
||||||
Image = new AssetBase();
|
|
||||||
Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
|
|
||||||
Image.Name = "Shape";
|
|
||||||
this.LoadAsset(Image, false, "base_shape.dat");
|
|
||||||
store = new AssetStorage();
|
|
||||||
store.Data = Image.Data;
|
|
||||||
store.Name = Image.Name;
|
|
||||||
store.UUID = Image.FullID;
|
|
||||||
db.Set(store);
|
|
||||||
db.Commit();
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Console.WriteLine("exception loading default assets into database");
|
|
||||||
Console.WriteLine(e.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Image = new AssetBase();
|
||||||
|
Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
|
||||||
|
Image.Name = "Shape";
|
||||||
|
this.LoadAsset(Image, false, "base_shape.dat");
|
||||||
|
store = new AssetStorage();
|
||||||
|
store.Data = Image.Data;
|
||||||
|
store.Name = Image.Name;
|
||||||
|
store.UUID = Image.FullID;
|
||||||
|
db.Set(store);
|
||||||
|
db.Commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadAsset(AssetBase info, bool image, string filename)
|
private void LoadAsset(AssetBase info, bool image, string filename)
|
||||||
|
@ -294,18 +277,18 @@ namespace OpenSim.Region.GridInterfaces.Local
|
||||||
//info.loaded=true;
|
//info.loaded=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class AssetUUIDQuery : Predicate
|
public class AssetUUIDQuery : Predicate
|
||||||
{
|
{
|
||||||
private LLUUID _findID;
|
private LLUUID _findID;
|
||||||
|
|
||||||
public AssetUUIDQuery(LLUUID find)
|
public AssetUUIDQuery(LLUUID find)
|
||||||
{
|
{
|
||||||
_findID = find;
|
_findID = find;
|
||||||
}
|
|
||||||
public bool Match(AssetStorage asset)
|
|
||||||
{
|
|
||||||
return (asset.UUID == _findID);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
public bool Match(AssetStorage asset)
|
||||||
|
{
|
||||||
|
return (asset.UUID == _findID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue