diff options
Diffstat (limited to 'OpenSim')
9 files changed, 65 insertions, 34 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index e56d361..ff527fb 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs | |||
@@ -40,8 +40,8 @@ using OpenSim.Framework.Inventory; | |||
40 | using OpenSim.Framework.Types; | 40 | using OpenSim.Framework.Types; |
41 | using OpenSim.Framework.Utilities; | 41 | using OpenSim.Framework.Utilities; |
42 | using OpenSim.Framework.Communications.Caches; | 42 | using OpenSim.Framework.Communications.Caches; |
43 | 43 | ||
44 | using Timer=System.Timers.Timer; | 44 | using Timer = System.Timers.Timer; |
45 | 45 | ||
46 | namespace OpenSim.Region.ClientStack | 46 | namespace OpenSim.Region.ClientStack |
47 | { | 47 | { |
@@ -74,7 +74,7 @@ namespace OpenSim.Region.ClientStack | |||
74 | protected IScene m_scene; | 74 | protected IScene m_scene; |
75 | private Dictionary<uint, ClientView> m_clientThreads; | 75 | private Dictionary<uint, ClientView> m_clientThreads; |
76 | private AssetCache m_assetCache; | 76 | private AssetCache m_assetCache; |
77 | // private InventoryCache m_inventoryCache; | 77 | // private InventoryCache m_inventoryCache; |
78 | private int cachedtextureserial = 0; | 78 | private int cachedtextureserial = 0; |
79 | protected AgentCircuitManager m_authenticateSessionsHandler; | 79 | protected AgentCircuitManager m_authenticateSessionsHandler; |
80 | private Encoding enc = Encoding.ASCII; | 80 | private Encoding enc = Encoding.ASCII; |
@@ -84,7 +84,7 @@ namespace OpenSim.Region.ClientStack | |||
84 | private int probesWithNoIngressPackets = 0; | 84 | private int probesWithNoIngressPackets = 0; |
85 | private int lastPacketsReceived = 0; | 85 | private int lastPacketsReceived = 0; |
86 | 86 | ||
87 | public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, Dictionary<uint, ClientView> clientThreads, IScene scene, AssetCache assetCache, PacketServer packServer, AgentCircuitManager authenSessions ) | 87 | public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, Dictionary<uint, ClientView> clientThreads, IScene scene, AssetCache assetCache, PacketServer packServer, AgentCircuitManager authenSessions) |
88 | { | 88 | { |
89 | m_moneyBalance = 1000; | 89 | m_moneyBalance = 1000; |
90 | 90 | ||
@@ -93,10 +93,10 @@ namespace OpenSim.Region.ClientStack | |||
93 | m_assetCache = assetCache; | 93 | m_assetCache = assetCache; |
94 | 94 | ||
95 | m_networkServer = packServer; | 95 | m_networkServer = packServer; |
96 | // m_inventoryCache = inventoryCache; | 96 | // m_inventoryCache = inventoryCache; |
97 | m_authenticateSessionsHandler = authenSessions; | 97 | m_authenticateSessionsHandler = authenSessions; |
98 | 98 | ||
99 | MainLog.Instance.Verbose( "OpenSimClient.cs - Started up new client thread to handle incoming request"); | 99 | MainLog.Instance.Verbose("OpenSimClient.cs - Started up new client thread to handle incoming request"); |
100 | cirpack = initialcirpack; | 100 | cirpack = initialcirpack; |
101 | userEP = remoteEP; | 101 | userEP = remoteEP; |
102 | 102 | ||
@@ -121,7 +121,7 @@ namespace OpenSim.Region.ClientStack | |||
121 | public void KillClient() | 121 | public void KillClient() |
122 | { | 122 | { |
123 | clientPingTimer.Stop(); | 123 | clientPingTimer.Stop(); |
124 | 124 | ||
125 | m_scene.RemoveClient(this.AgentId); | 125 | m_scene.RemoveClient(this.AgentId); |
126 | 126 | ||
127 | m_clientThreads.Remove(this.CircuitCode); | 127 | m_clientThreads.Remove(this.CircuitCode); |
@@ -186,14 +186,15 @@ namespace OpenSim.Region.ClientStack | |||
186 | 186 | ||
187 | protected virtual void ClientLoop() | 187 | protected virtual void ClientLoop() |
188 | { | 188 | { |
189 | MainLog.Instance.Verbose( "OpenSimClient.cs:ClientLoop() - Entered loop"); | 189 | MainLog.Instance.Verbose("OpenSimClient.cs:ClientLoop() - Entered loop"); |
190 | while (true) | 190 | while (true) |
191 | { | 191 | { |
192 | QueItem nextPacket = PacketQueue.Dequeue(); | 192 | QueItem nextPacket = PacketQueue.Dequeue(); |
193 | if (nextPacket.Incoming) | 193 | if (nextPacket.Incoming) |
194 | { | 194 | { |
195 | //is a incoming packet | 195 | //is a incoming packet |
196 | if (nextPacket.Packet.Type != PacketType.AgentUpdate) { | 196 | if (nextPacket.Packet.Type != PacketType.AgentUpdate) |
197 | { | ||
197 | packetsReceived++; | 198 | packetsReceived++; |
198 | } | 199 | } |
199 | ProcessInPacket(nextPacket.Packet); | 200 | ProcessInPacket(nextPacket.Packet); |
@@ -209,15 +210,21 @@ namespace OpenSim.Region.ClientStack | |||
209 | 210 | ||
210 | protected void CheckClientConnectivity(object sender, ElapsedEventArgs e) | 211 | protected void CheckClientConnectivity(object sender, ElapsedEventArgs e) |
211 | { | 212 | { |
212 | if (packetsReceived == lastPacketsReceived) { | 213 | if (packetsReceived == lastPacketsReceived) |
214 | { | ||
213 | probesWithNoIngressPackets++; | 215 | probesWithNoIngressPackets++; |
214 | if (probesWithNoIngressPackets > 30) { | 216 | if (probesWithNoIngressPackets > 30) |
217 | { | ||
215 | this.KillClient(); | 218 | this.KillClient(); |
216 | } else { | 219 | } |
220 | else | ||
221 | { | ||
217 | // this will normally trigger at least one packet (ping response) | 222 | // this will normally trigger at least one packet (ping response) |
218 | SendStartPingCheck(0); | 223 | SendStartPingCheck(0); |
219 | } | 224 | } |
220 | } else { | 225 | } |
226 | else | ||
227 | { | ||
221 | // Something received in the meantime - we can reset the counters | 228 | // Something received in the meantime - we can reset the counters |
222 | probesWithNoIngressPackets = 0; | 229 | probesWithNoIngressPackets = 0; |
223 | lastPacketsReceived = packetsReceived; | 230 | lastPacketsReceived = packetsReceived; |
@@ -232,7 +239,7 @@ namespace OpenSim.Region.ClientStack | |||
232 | clientPingTimer.Elapsed += new ElapsedEventHandler(CheckClientConnectivity); | 239 | clientPingTimer.Elapsed += new ElapsedEventHandler(CheckClientConnectivity); |
233 | clientPingTimer.Enabled = true; | 240 | clientPingTimer.Enabled = true; |
234 | 241 | ||
235 | MainLog.Instance.Verbose( "OpenSimClient.cs:InitNewClient() - Adding viewer agent to scene"); | 242 | MainLog.Instance.Verbose("OpenSimClient.cs:InitNewClient() - Adding viewer agent to scene"); |
236 | this.m_scene.AddNewClient(this, false); | 243 | this.m_scene.AddNewClient(this, false); |
237 | } | 244 | } |
238 | 245 | ||
diff --git a/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs b/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs index 395819d..9b97fc6 100644 --- a/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs +++ b/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs | |||
@@ -47,10 +47,10 @@ namespace OpenSim.Region.Interfaces | |||
47 | /// <param name="dbname">The name of the database to store to (may not be applicable)</param> | 47 | /// <param name="dbname">The name of the database to store to (may not be applicable)</param> |
48 | void Initialise(string filename, string dbname); | 48 | void Initialise(string filename, string dbname); |
49 | 49 | ||
50 | void StoreObject(SceneObjectGroup obj); | 50 | void StoreObject(SceneObjectGroup obj, LLUUID regionUUID); |
51 | void RemoveObject(LLUUID uuid); | 51 | void RemoveObject(LLUUID uuid, LLUUID regionUUID); |
52 | 52 | ||
53 | List<SceneObjectGroup> LoadObjects(); | 53 | List<SceneObjectGroup> LoadObjects(LLUUID regionUUID); |
54 | 54 | ||
55 | void StoreTerrain(double[,] terrain); | 55 | void StoreTerrain(double[,] terrain); |
56 | double[,] LoadTerrain(); | 56 | double[,] LoadTerrain(); |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index 0ed10c0..0449cd9 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | |||
@@ -270,7 +270,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
270 | remoteClient.SendInventoryItemUpdate(item); | 270 | remoteClient.SendInventoryItemUpdate(item); |
271 | } | 271 | } |
272 | 272 | ||
273 | storageManager.DataStore.RemoveObject(((SceneObjectGroup)selectedEnt).UUID); | 273 | storageManager.DataStore.RemoveObject(((SceneObjectGroup)selectedEnt).UUID, m_regInfo.SimUUID); |
274 | ((SceneObjectGroup)selectedEnt).DeleteGroup(); | 274 | ((SceneObjectGroup)selectedEnt).DeleteGroup(); |
275 | 275 | ||
276 | lock (Entities) | 276 | lock (Entities) |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index d1a16e0..10be283 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -180,6 +180,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
180 | ScenePresence.LoadAnims(); | 180 | ScenePresence.LoadAnims(); |
181 | 181 | ||
182 | httpListener = httpServer; | 182 | httpListener = httpServer; |
183 | |||
184 | |||
183 | } | 185 | } |
184 | 186 | ||
185 | #endregion | 187 | #endregion |
@@ -497,7 +499,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
497 | public void LoadPrimsFromStorage() | 499 | public void LoadPrimsFromStorage() |
498 | { | 500 | { |
499 | MainLog.Instance.Verbose("Loading objects from datastore"); | 501 | MainLog.Instance.Verbose("Loading objects from datastore"); |
500 | List<SceneObjectGroup> PrimsFromDB = storageManager.DataStore.LoadObjects(); | 502 | List<SceneObjectGroup> PrimsFromDB = storageManager.DataStore.LoadObjects(this.m_regInfo.SimUUID); |
501 | foreach (SceneObjectGroup prim in PrimsFromDB) | 503 | foreach (SceneObjectGroup prim in PrimsFromDB) |
502 | { | 504 | { |
503 | AddEntityFromStorage(prim); | 505 | AddEntityFromStorage(prim); |
@@ -707,7 +709,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
707 | client.OnFetchInventory += commsManager.UserProfiles.HandleFetchInventory; | 709 | client.OnFetchInventory += commsManager.UserProfiles.HandleFetchInventory; |
708 | client.OnAssetUploadRequest += commsManager.TransactionsManager.HandleUDPUploadRequest; | 710 | client.OnAssetUploadRequest += commsManager.TransactionsManager.HandleUDPUploadRequest; |
709 | client.OnXferReceive += commsManager.TransactionsManager.HandleXfer; | 711 | client.OnXferReceive += commsManager.TransactionsManager.HandleXfer; |
710 | // client.OnRequestXfer += RequestXfer; | 712 | // client.OnRequestXfer += RequestXfer; |
711 | 713 | ||
712 | client.OnRequestAvatarProperties += RequestAvatarProperty; | 714 | client.OnRequestAvatarProperties += RequestAvatarProperty; |
713 | 715 | ||
@@ -919,9 +921,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
919 | if (agent.CapsPath != "") | 921 | if (agent.CapsPath != "") |
920 | { | 922 | { |
921 | //Console.WriteLine("new user, so creating caps handler for it"); | 923 | //Console.WriteLine("new user, so creating caps handler for it"); |
922 | Caps cap = | 924 | Caps cap = new Caps(assetCache, httpListener, m_regInfo.ExternalHostName, m_regInfo.ExternalEndPoint.Port, agent.CapsPath, agent.AgentID); |
923 | new Caps(assetCache, httpListener, m_regInfo.ExternalHostName, m_regInfo.ExternalEndPoint.Port, | ||
924 | agent.CapsPath, agent.AgentID); | ||
925 | Util.SetCapsURL(agent.AgentID, "http://" + m_regInfo.ExternalHostName + ":" + httpListener.Port.ToString() + "/CAPS/" + agent.CapsPath + "0000/"); | 925 | Util.SetCapsURL(agent.AgentID, "http://" + m_regInfo.ExternalHostName + ":" + httpListener.Port.ToString() + "/CAPS/" + agent.CapsPath + "0000/"); |
926 | cap.RegisterHandlers(); | 926 | cap.RegisterHandlers(); |
927 | cap.AddNewInventoryItem = this.AddInventoryItem; | 927 | cap.AddNewInventoryItem = this.AddInventoryItem; |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 1e6cd8f..9042c04 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -436,12 +436,26 @@ namespace OpenSim.Region.Environment.Scenes | |||
436 | linkPart.SetParent(this); | 436 | linkPart.SetParent(this); |
437 | 437 | ||
438 | //TODO: rest of parts | 438 | //TODO: rest of parts |
439 | foreach (SceneObjectPart part in objectGroup.Children.Values) | ||
440 | { | ||
441 | if (part.UUID != objectGroup.m_rootPart.UUID) | ||
442 | { | ||
443 | this.LinkNonRootPart(part); | ||
444 | } | ||
445 | } | ||
439 | 446 | ||
440 | m_scene.EventManager.OnBackup -= objectGroup.ProcessBackup; | 447 | m_scene.EventManager.OnBackup -= objectGroup.ProcessBackup; |
441 | m_scene.DeleteEntity(objectGroup.UUID); | 448 | m_scene.DeleteEntity(objectGroup.UUID); |
442 | this.ScheduleGroupForFullUpdate(); | 449 | this.ScheduleGroupForFullUpdate(); |
443 | } | 450 | } |
444 | 451 | ||
452 | private void LinkNonRootPart(SceneObjectPart part) | ||
453 | { | ||
454 | part.SetParent(this); | ||
455 | part.ParentID = this.m_rootPart.LocalID; | ||
456 | this.m_parts.Add(part.UUID, part); | ||
457 | } | ||
458 | |||
445 | /// <summary> | 459 | /// <summary> |
446 | /// | 460 | /// |
447 | /// </summary> | 461 | /// </summary> |
@@ -812,7 +826,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
812 | /// <param name="datastore"></param> | 826 | /// <param name="datastore"></param> |
813 | public void ProcessBackup(OpenSim.Region.Interfaces.IRegionDataStore datastore) | 827 | public void ProcessBackup(OpenSim.Region.Interfaces.IRegionDataStore datastore) |
814 | { | 828 | { |
815 | datastore.StoreObject(this); | 829 | datastore.StoreObject(this, m_scene.RegionInfo.SimUUID); |
816 | } | 830 | } |
817 | #endregion | 831 | #endregion |
818 | 832 | ||
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 0393a2a..73e9d48 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -496,6 +496,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
496 | 496 | ||
497 | this.m_scene.SendAllSceneObjectsToClient(this.ControllingClient); | 497 | this.m_scene.SendAllSceneObjectsToClient(this.ControllingClient); |
498 | this.ControllingClient.SendViewerTime(this.m_scene.TimePhase); | 498 | this.ControllingClient.SendViewerTime(this.m_scene.TimePhase); |
499 | |||
500 | //Please don't remove the following code (at least not yet), just leave it commented out | ||
501 | //gives the user god powers, should help with debuging things in the future | ||
502 | /* | ||
503 | GrantGodlikePowersPacket grant = new GrantGodlikePowersPacket(); | ||
504 | grant.AgentData.AgentID = this.ControllingClient.AgentId; | ||
505 | grant.AgentData.SessionID = this.ControllingClient.SessionId; | ||
506 | grant.GrantData.GodLevel = 255; | ||
507 | grant.GrantData.Token = LLUUID.Random(); | ||
508 | this.ControllingClient.OutPacket(grant);*/ | ||
499 | } | 509 | } |
500 | 510 | ||
501 | /// <summary> | 511 | /// <summary> |
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.DB4o/DB4oDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.DB4o/DB4oDataStore.cs index 9c5e4bc..73eb635 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.DB4o/DB4oDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.DB4o/DB4oDataStore.cs | |||
@@ -43,12 +43,12 @@ namespace OpenSim.DataStore.DB4oStorage | |||
43 | return; | 43 | return; |
44 | } | 44 | } |
45 | 45 | ||
46 | public void StoreObject(SceneObjectGroup obj) | 46 | public void StoreObject(SceneObjectGroup obj, LLUUID regionUUID) |
47 | { | 47 | { |
48 | db.Set(obj); | 48 | db.Set(obj); |
49 | } | 49 | } |
50 | 50 | ||
51 | public void RemoveObject(LLUUID obj) | 51 | public void RemoveObject(LLUUID obj, LLUUID regionUUID) |
52 | { | 52 | { |
53 | IObjectSet result = db.Query(new SceneObjectQuery(obj)); | 53 | IObjectSet result = db.Query(new SceneObjectQuery(obj)); |
54 | if (result.Count > 0) | 54 | if (result.Count > 0) |
@@ -58,7 +58,7 @@ namespace OpenSim.DataStore.DB4oStorage | |||
58 | } | 58 | } |
59 | } | 59 | } |
60 | 60 | ||
61 | public List<SceneObjectGroup> LoadObjects() | 61 | public List<SceneObjectGroup> LoadObjects(LLUUID regionUUID) |
62 | { | 62 | { |
63 | IObjectSet result = db.Get(typeof(SceneObjectGroup)); | 63 | IObjectSet result = db.Get(typeof(SceneObjectGroup)); |
64 | List<SceneObjectGroup> retvals = new List<SceneObjectGroup>(); | 64 | List<SceneObjectGroup> retvals = new List<SceneObjectGroup>(); |
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs index 391ac84..b6c6c83 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs | |||
@@ -485,7 +485,7 @@ namespace OpenSim.DataStore.MonoSqliteStorage | |||
485 | } | 485 | } |
486 | } | 486 | } |
487 | 487 | ||
488 | public void StoreObject(SceneObjectGroup obj) | 488 | public void StoreObject(SceneObjectGroup obj, LLUUID regionUUID) |
489 | { | 489 | { |
490 | foreach (SceneObjectPart prim in obj.Children.Values) | 490 | foreach (SceneObjectPart prim in obj.Children.Values) |
491 | { | 491 | { |
@@ -498,7 +498,7 @@ namespace OpenSim.DataStore.MonoSqliteStorage | |||
498 | // MainLog.Instance.Verbose("Dump of prims:", ds.GetXml()); | 498 | // MainLog.Instance.Verbose("Dump of prims:", ds.GetXml()); |
499 | } | 499 | } |
500 | 500 | ||
501 | public void RemoveObject(LLUUID obj) | 501 | public void RemoveObject(LLUUID obj, LLUUID regionUUID) |
502 | { | 502 | { |
503 | DataTable prims = ds.Tables["prims"]; | 503 | DataTable prims = ds.Tables["prims"]; |
504 | DataTable shapes = ds.Tables["primshapes"]; | 504 | DataTable shapes = ds.Tables["primshapes"]; |
@@ -520,7 +520,7 @@ namespace OpenSim.DataStore.MonoSqliteStorage | |||
520 | shapeDa.Update(ds, "primshapes"); | 520 | shapeDa.Update(ds, "primshapes"); |
521 | } | 521 | } |
522 | 522 | ||
523 | public List<SceneObjectGroup> LoadObjects() | 523 | public List<SceneObjectGroup> LoadObjects(LLUUID regionUUID) |
524 | { | 524 | { |
525 | Dictionary<LLUUID, SceneObjectGroup> createdObjects = new Dictionary<LLUUID, SceneObjectGroup>(); | 525 | Dictionary<LLUUID, SceneObjectGroup> createdObjects = new Dictionary<LLUUID, SceneObjectGroup>(); |
526 | List<SceneObjectGroup> retvals = new List<SceneObjectGroup>(); | 526 | List<SceneObjectGroup> retvals = new List<SceneObjectGroup>(); |
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs index 643508e..176a534 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs | |||
@@ -18,17 +18,17 @@ namespace OpenSim.DataStore.NullStorage | |||
18 | return; | 18 | return; |
19 | } | 19 | } |
20 | 20 | ||
21 | public void StoreObject(SceneObjectGroup obj) | 21 | public void StoreObject(SceneObjectGroup obj, LLUUID regionUUID) |
22 | { | 22 | { |
23 | 23 | ||
24 | } | 24 | } |
25 | 25 | ||
26 | public void RemoveObject(LLUUID obj) | 26 | public void RemoveObject(LLUUID obj, LLUUID regionUUID) |
27 | { | 27 | { |
28 | 28 | ||
29 | } | 29 | } |
30 | 30 | ||
31 | public List<SceneObjectGroup> LoadObjects() | 31 | public List<SceneObjectGroup> LoadObjects(LLUUID regionUUID) |
32 | { | 32 | { |
33 | return new List<SceneObjectGroup>(); | 33 | return new List<SceneObjectGroup>(); |
34 | } | 34 | } |