diff options
author | Diva Canto | 2012-04-06 20:34:31 -0700 |
---|---|---|
committer | Diva Canto | 2012-04-06 20:34:31 -0700 |
commit | 9637e509567efe512d4b29ea925c10011cdbe99e (patch) | |
tree | 405eaf60308ba06c3ba40a792ecfe17d20495d01 /OpenSim/Region/CoreModules/Framework/EntityTransfer | |
parent | Deleted the unused and commented code from 2 commits ago. (diff) | |
download | opensim-SC-9637e509567efe512d4b29ea925c10011cdbe99e.zip opensim-SC-9637e509567efe512d4b29ea925c10011cdbe99e.tar.gz opensim-SC-9637e509567efe512d4b29ea925c10011cdbe99e.tar.bz2 opensim-SC-9637e509567efe512d4b29ea925c10011cdbe99e.tar.xz |
Moved the inventory manipulation from HGEntityTransferModule to HGInventoryAccessModule where it belongs. They need to exchange some events, so added those to EventManager. Those events (TeleportStart and TeleportFail) are nice to have anyway.
Diffstat (limited to 'OpenSim/Region/CoreModules/Framework/EntityTransfer')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 8 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs | 149 |
2 files changed, 10 insertions, 147 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 86e10d4..fa9cd55 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -561,12 +561,18 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
561 | // Finally, kill the agent we just created at the destination. | 561 | // Finally, kill the agent we just created at the destination. |
562 | m_aScene.SimulationService.CloseAgent(finalDestination, sp.UUID); | 562 | m_aScene.SimulationService.CloseAgent(finalDestination, sp.UUID); |
563 | 563 | ||
564 | sp.Scene.EventManager.TriggerTeleportFail(sp.ControllingClient, logout); | ||
564 | } | 565 | } |
565 | 566 | ||
566 | protected virtual bool CreateAgent(ScenePresence sp, GridRegion reg, GridRegion finalDestination, AgentCircuitData agentCircuit, uint teleportFlags, out string reason, out bool logout) | 567 | protected virtual bool CreateAgent(ScenePresence sp, GridRegion reg, GridRegion finalDestination, AgentCircuitData agentCircuit, uint teleportFlags, out string reason, out bool logout) |
567 | { | 568 | { |
568 | logout = false; | 569 | logout = false; |
569 | return m_aScene.SimulationService.CreateAgent(finalDestination, agentCircuit, teleportFlags, out reason); | 570 | bool success = m_aScene.SimulationService.CreateAgent(finalDestination, agentCircuit, teleportFlags, out reason); |
571 | |||
572 | if (success) | ||
573 | sp.Scene.EventManager.TriggerTeleportStart(sp.ControllingClient, reg, finalDestination, teleportFlags, logout); | ||
574 | |||
575 | return success; | ||
570 | } | 576 | } |
571 | 577 | ||
572 | protected virtual bool UpdateAgent(GridRegion reg, GridRegion finalDestination, AgentData agent) | 578 | protected virtual bool UpdateAgent(GridRegion reg, GridRegion finalDestination, AgentData agent) |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs index 0f422ae..7f9175d 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs | |||
@@ -51,8 +51,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
51 | 51 | ||
52 | private bool m_Initialized = false; | 52 | private bool m_Initialized = false; |
53 | 53 | ||
54 | private bool m_RestrictInventoryAccessAbroad = false; | ||
55 | |||
56 | private GatekeeperServiceConnector m_GatekeeperConnector; | 54 | private GatekeeperServiceConnector m_GatekeeperConnector; |
57 | 55 | ||
58 | #region ISharedRegionModule | 56 | #region ISharedRegionModule |
@@ -71,10 +69,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
71 | if (name == Name) | 69 | if (name == Name) |
72 | { | 70 | { |
73 | InitialiseCommon(source); | 71 | InitialiseCommon(source); |
74 | IConfig transferConfig = source.Configs["HGEntityTransferModule"]; | ||
75 | if (transferConfig != null) | ||
76 | m_RestrictInventoryAccessAbroad = transferConfig.GetBoolean("RestrictInventoryAccessAbroad", false); | ||
77 | |||
78 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: {0} enabled.", Name); | 72 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: {0} enabled.", Name); |
79 | } | 73 | } |
80 | } | 74 | } |
@@ -94,44 +88,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
94 | client.OnTeleportHomeRequest += TeleportHome; | 88 | client.OnTeleportHomeRequest += TeleportHome; |
95 | client.OnTeleportLandmarkRequest += RequestTeleportLandmark; | 89 | client.OnTeleportLandmarkRequest += RequestTeleportLandmark; |
96 | client.OnConnectionClosed += new Action<IClientAPI>(OnConnectionClosed); | 90 | client.OnConnectionClosed += new Action<IClientAPI>(OnConnectionClosed); |
97 | client.OnCompleteMovementToRegion += new Action<IClientAPI, bool>(OnCompleteMovementToRegion); | ||
98 | } | 91 | } |
99 | 92 | ||
100 | protected void OnCompleteMovementToRegion(IClientAPI client, bool arg2) | ||
101 | { | ||
102 | // HACK HACK -- just seeing how the viewer responds | ||
103 | // Let's send the Suitcase or the real root folder folder for incoming HG agents | ||
104 | // Visiting agents get their suitcase contents; incoming local users get their real root folder's content | ||
105 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: OnCompleteMovementToRegion of user {0}", client.AgentId); | ||
106 | object sp = null; | ||
107 | if (client.Scene.TryGetScenePresence(client.AgentId, out sp)) | ||
108 | { | ||
109 | if (sp is ScenePresence) | ||
110 | { | ||
111 | AgentCircuitData aCircuit = ((ScenePresence)sp).Scene.AuthenticateHandler.GetAgentCircuitData(client.AgentId); | ||
112 | if ((aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0) | ||
113 | { | ||
114 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: ViaHGLogin"); | ||
115 | if (m_RestrictInventoryAccessAbroad) | ||
116 | { | ||
117 | IUserManagement uMan = m_Scenes[0].RequestModuleInterface<IUserManagement>(); | ||
118 | if (uMan.IsLocalGridUser(client.AgentId)) | ||
119 | { | ||
120 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: User is local"); | ||
121 | RestoreRootFolderContents(client); | ||
122 | } | ||
123 | else | ||
124 | { | ||
125 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: User is foreign"); | ||
126 | RestoreSuitcaseFolderContents(client); | ||
127 | } | ||
128 | } | ||
129 | } | ||
130 | } | ||
131 | } | ||
132 | } | ||
133 | |||
134 | |||
135 | public override void RegionLoaded(Scene scene) | 93 | public override void RegionLoaded(Scene scene) |
136 | { | 94 | { |
137 | base.RegionLoaded(scene); | 95 | base.RegionLoaded(scene); |
@@ -141,12 +99,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
141 | m_GatekeeperConnector = new GatekeeperServiceConnector(scene.AssetService); | 99 | m_GatekeeperConnector = new GatekeeperServiceConnector(scene.AssetService); |
142 | m_Initialized = true; | 100 | m_Initialized = true; |
143 | 101 | ||
144 | scene.AddCommand( | ||
145 | "HG", this, "send inventory", | ||
146 | "send inventory", | ||
147 | "Don't use this", | ||
148 | HandleSendInventory); | ||
149 | |||
150 | } | 102 | } |
151 | 103 | ||
152 | } | 104 | } |
@@ -219,21 +171,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
219 | bool success = connector.LoginAgentToGrid(agentCircuit, reg, finalDestination, out reason); | 171 | bool success = connector.LoginAgentToGrid(agentCircuit, reg, finalDestination, out reason); |
220 | logout = success; // flag for later logout from this grid; this is an HG TP | 172 | logout = success; // flag for later logout from this grid; this is an HG TP |
221 | 173 | ||
222 | if (success && m_RestrictInventoryAccessAbroad) | 174 | if (success) |
223 | { | 175 | sp.Scene.EventManager.TriggerTeleportStart(sp.ControllingClient, reg, finalDestination, teleportFlags, logout); |
224 | IUserManagement uMan = m_aScene.RequestModuleInterface<IUserManagement>(); | ||
225 | if (uMan != null && uMan.IsLocalGridUser(sp.UUID)) | ||
226 | { | ||
227 | // local grid user | ||
228 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: User is local"); | ||
229 | RemoveRootFolderContents(sp.ControllingClient); | ||
230 | } | ||
231 | else | ||
232 | { | ||
233 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: User is foreign"); | ||
234 | RemoveSuitcaseFolderContents(sp.ControllingClient); | ||
235 | } | ||
236 | } | ||
237 | 176 | ||
238 | return success; | 177 | return success; |
239 | } | 178 | } |
@@ -244,7 +183,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
244 | } | 183 | } |
245 | } | 184 | } |
246 | 185 | ||
247 | return m_aScene.SimulationService.CreateAgent(reg, agentCircuit, teleportFlags, out reason); | 186 | return base.CreateAgent(sp, reg, finalDestination, agentCircuit, teleportFlags, out reason, out logout); |
248 | } | 187 | } |
249 | 188 | ||
250 | public override void TeleportHome(UUID id, IClientAPI client) | 189 | public override void TeleportHome(UUID id, IClientAPI client) |
@@ -348,15 +287,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
348 | 287 | ||
349 | } | 288 | } |
350 | 289 | ||
351 | protected override void Fail(ScenePresence sp, GridRegion finalDestination, bool logout) | ||
352 | { | ||
353 | base.Fail(sp, finalDestination, logout); | ||
354 | if (logout && m_RestrictInventoryAccessAbroad) | ||
355 | { | ||
356 | RestoreRootFolderContents(sp.ControllingClient); | ||
357 | } | ||
358 | } | ||
359 | |||
360 | #endregion | 290 | #endregion |
361 | 291 | ||
362 | #region IUserAgentVerificationModule | 292 | #region IUserAgentVerificationModule |
@@ -411,71 +341,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
411 | 341 | ||
412 | #endregion | 342 | #endregion |
413 | 343 | ||
414 | private void RemoveRootFolderContents(IClientAPI client) | ||
415 | { | ||
416 | // TODO tell the viewer to remove the root folder's content | ||
417 | if (client is IClientCore) | ||
418 | { | ||
419 | IClientCore core = (IClientCore)client; | ||
420 | IClientInventory inv; | ||
421 | |||
422 | if (core.TryGet<IClientInventory>(out inv)) | ||
423 | { | ||
424 | InventoryFolderBase root = m_Scenes[0].InventoryService.GetRootFolder(client.AgentId); | ||
425 | if (root != null) | ||
426 | { | ||
427 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Removing root inventory for user {0}", client.Name); | ||
428 | InventoryCollection content = m_Scenes[0].InventoryService.GetFolderContent(client.AgentId, root.ID); | ||
429 | List<UUID> fids = new List<UUID>(); | ||
430 | List<UUID> iids = new List<UUID>(); | ||
431 | List<InventoryFolderBase> keep = new List<InventoryFolderBase>(); | ||
432 | |||
433 | foreach (InventoryFolderBase f in content.Folders) | ||
434 | { | ||
435 | if (f.Name != "My Suitcase") | ||
436 | { | ||
437 | f.Name = f.Name + " (Unavailable)"; | ||
438 | keep.Add(f); | ||
439 | } | ||
440 | } | ||
441 | |||
442 | // items directly under the root folder | ||
443 | foreach (InventoryItemBase it in content.Items) | ||
444 | it.Name = it.Name + " (Unavailable)"; ; | ||
445 | |||
446 | // Send the new names | ||
447 | inv.SendBulkUpdateInventory(keep.ToArray(), content.Items.ToArray()); | ||
448 | |||
449 | } | ||
450 | } | ||
451 | } | ||
452 | } | ||
453 | |||
454 | private void RemoveSuitcaseFolderContents(IClientAPI client) | ||
455 | { | ||
456 | } | ||
457 | |||
458 | private void RestoreRootFolderContents(IClientAPI client) | ||
459 | { | ||
460 | m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Restoring root folder"); | ||
461 | if (client is IClientCore) | ||
462 | { | ||
463 | IClientCore core = (IClientCore)client; | ||
464 | IClientInventory inv; | ||
465 | |||
466 | if (core.TryGet<IClientInventory>(out inv)) | ||
467 | { | ||
468 | InventoryFolderBase root = m_Scenes[0].InventoryService.GetRootFolder(client.AgentId); | ||
469 | InventoryCollection content = m_Scenes[0].InventoryService.GetFolderContent(client.AgentId, root.ID); | ||
470 | |||
471 | inv.SendBulkUpdateInventory(content.Folders.ToArray(), content.Items.ToArray()); | ||
472 | } | ||
473 | } | ||
474 | } | ||
475 | |||
476 | private void RestoreSuitcaseFolderContents(IClientAPI client) | ||
477 | { | ||
478 | } | ||
479 | 344 | ||
480 | private GridRegion MakeRegion(AgentCircuitData aCircuit) | 345 | private GridRegion MakeRegion(AgentCircuitData aCircuit) |
481 | { | 346 | { |
@@ -494,13 +359,5 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
494 | return region; | 359 | return region; |
495 | } | 360 | } |
496 | 361 | ||
497 | protected void HandleSendInventory(string module, string[] cmd) | ||
498 | { | ||
499 | m_Scenes[0].ForEachClient(delegate(IClientAPI client) | ||
500 | { | ||
501 | RestoreRootFolderContents(client); | ||
502 | }); | ||
503 | } | ||
504 | |||
505 | } | 362 | } |
506 | } | 363 | } |