blob: 73eb6358130e56eaae0a9b22cc6d060047d1a046 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
using System;
using System.Collections.Generic;
using System.Text;
using OpenSim.Region.Environment.Scenes;
using OpenSim.Region.Environment.LandManagement;
using OpenSim.Region.Environment;
using OpenSim.Region.Interfaces;
using OpenSim.Framework.Console;
using libsecondlife;
using Db4objects.Db4o;
using Db4objects.Db4o.Query;
namespace OpenSim.DataStore.DB4oStorage
{
public class SceneObjectQuery : Predicate
{
private LLUUID globalIDSearch;
public SceneObjectQuery(LLUUID find)
{
globalIDSearch = find;
}
public bool Match(SceneObjectGroup obj)
{
return obj.UUID == globalIDSearch;
}
}
public class DB4oDataStore : IRegionDataStore
{
private IObjectContainer db;
public void Initialise(string dbfile, string dbname)
{
MainLog.Instance.Verbose("DATASTORE", "DB4O - Opening " + dbfile);
db = Db4oFactory.OpenFile(dbfile);
return;
}
public void StoreObject(SceneObjectGroup obj, LLUUID regionUUID)
{
db.Set(obj);
}
public void RemoveObject(LLUUID obj, LLUUID regionUUID)
{
IObjectSet result = db.Query(new SceneObjectQuery(obj));
if (result.Count > 0)
{
SceneObjectGroup item = (SceneObjectGroup)result.Next();
db.Delete(item);
}
}
public List<SceneObjectGroup> LoadObjects(LLUUID regionUUID)
{
IObjectSet result = db.Get(typeof(SceneObjectGroup));
List<SceneObjectGroup> retvals = new List<SceneObjectGroup>();
MainLog.Instance.Verbose("DATASTORE", "DB4O - LoadObjects found " + result.Count.ToString() + " objects");
foreach (Object obj in result)
{
retvals.Add((SceneObjectGroup)obj);
}
return retvals;
}
public void StoreTerrain(double[,] ter)
{
}
public double[,] LoadTerrain()
{
return null;
}
public void RemoveLandObject(uint id)
{
}
public void StoreParcel(Land parcel)
{
}
public List<Land> LoadLandObjects()
{
return new List<Land>();
}
public void Shutdown()
{
if (db != null)
{
db.Commit();
db.Close();
}
}
}
}
|