aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/Framework
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs (renamed from OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueGetModule.cs)22
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs (renamed from OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs)18
-rw-r--r--OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs (renamed from OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs)56
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs4
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs3
5 files changed, 57 insertions, 46 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
index 05fe3ee..139d8b8 100644
--- a/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueGetModule.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs
@@ -33,6 +33,7 @@ using System.Reflection;
33using System.Threading; 33using System.Threading;
34using log4net; 34using log4net;
35using Nini.Config; 35using Nini.Config;
36using Mono.Addins;
36using OpenMetaverse; 37using OpenMetaverse;
37using OpenMetaverse.Messages.Linden; 38using OpenMetaverse.Messages.Linden;
38using OpenMetaverse.Packets; 39using OpenMetaverse.Packets;
@@ -45,7 +46,7 @@ using OpenSim.Region.Framework.Scenes;
45using BlockingLLSDQueue = OpenSim.Framework.BlockingQueue<OpenMetaverse.StructuredData.OSD>; 46using BlockingLLSDQueue = OpenSim.Framework.BlockingQueue<OpenMetaverse.StructuredData.OSD>;
46using Caps=OpenSim.Framework.Capabilities.Caps; 47using Caps=OpenSim.Framework.Capabilities.Caps;
47 48
48namespace OpenSim.Region.CoreModules.Framework.EventQueue 49namespace OpenSim.Region.ClientStack.Linden
49{ 50{
50 public struct QueueItem 51 public struct QueueItem
51 { 52 {
@@ -53,6 +54,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
53 public OSDMap body; 54 public OSDMap body;
54 } 55 }
55 56
57 //[Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
56 public class EventQueueGetModule : IEventQueue, IRegionModule 58 public class EventQueueGetModule : IEventQueue, IRegionModule
57 { 59 {
58 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 60 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -270,9 +272,9 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
270 public void OnRegisterCaps(UUID agentID, Caps caps) 272 public void OnRegisterCaps(UUID agentID, Caps caps)
271 { 273 {
272 // Register an event queue for the client 274 // Register an event queue for the client
273 275
274 //m_log.DebugFormat( 276 //m_log.DebugFormat(
275 // "[EVENTQUEUE]: OnRegisterCaps: agentID {0} caps {1} region {2}", 277 // "[EVENTQUEUE]: OnRegisterCaps: agentID {0} caps {1} region {2}",
276 // agentID, caps, m_scene.RegionInfo.RegionName); 278 // agentID, caps, m_scene.RegionInfo.RegionName);
277 279
278 // Let's instantiate a Queue for this agent right now 280 // Let's instantiate a Queue for this agent right now
@@ -315,7 +317,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
315 { 317 {
316 return ProcessQueue(m_dhttpMethod, agentID, caps); 318 return ProcessQueue(m_dhttpMethod, agentID, caps);
317 })); 319 }));
318 320
319 // This will persist this beyond the expiry of the caps handlers 321 // This will persist this beyond the expiry of the caps handlers
320 MainServer.Instance.AddPollServiceHTTPHandler( 322 MainServer.Instance.AddPollServiceHTTPHandler(
321 capsBase + EventQueueGetUUID.ToString() + "/", EventQueuePoll, new PollServiceEventArgs(null, HasEvents, GetEvents, NoEvents, agentID)); 323 capsBase + EventQueueGetUUID.ToString() + "/", EventQueuePoll, new PollServiceEventArgs(null, HasEvents, GetEvents, NoEvents, agentID));
@@ -520,7 +522,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
520 } 522 }
521 if (AvatarID != UUID.Zero) 523 if (AvatarID != UUID.Zero)
522 { 524 {
523 return ProcessQueue(request, AvatarID, m_scene.CapsModule.GetCapsHandlerForUser(AvatarID)); 525 return ProcessQueue(request, AvatarID, m_scene.CapsModule.GetCapsForUser(AvatarID));
524 } 526 }
525 else 527 else
526 { 528 {
@@ -715,5 +717,15 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
715 OSD item = EventQueueHelper.PlacesQuery(groupUpdate); 717 OSD item = EventQueueHelper.PlacesQuery(groupUpdate);
716 Enqueue(item, avatarID); 718 Enqueue(item, avatarID);
717 } 719 }
720
721 public OSD ScriptRunningEvent(UUID objectID, UUID itemID, bool running, bool mono)
722 {
723 return EventQueueHelper.ScriptRunningReplyEvent(objectID, itemID, running, mono);
724 }
725
726 public OSD BuildEvent(string eventName, OSD eventBody)
727 {
728 return EventQueueHelper.BuildEvent(eventName, eventBody);
729 }
718 } 730 }
719} 731}
diff --git a/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs
index 0d7d16a..3f49aba 100644
--- a/OpenSim/Region/CoreModules/Framework/EventQueue/EventQueueHelper.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs
@@ -32,7 +32,7 @@ using OpenMetaverse.Packets;
32using OpenMetaverse.StructuredData; 32using OpenMetaverse.StructuredData;
33using OpenMetaverse.Messages.Linden; 33using OpenMetaverse.Messages.Linden;
34 34
35namespace OpenSim.Region.CoreModules.Framework.EventQueue 35namespace OpenSim.Region.ClientStack.Linden
36{ 36{
37 public class EventQueueHelper 37 public class EventQueueHelper
38 { 38 {
@@ -61,7 +61,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
61// return result; 61// return result;
62// } 62// }
63 63
64 public static OSD buildEvent(string eventName, OSD eventBody) 64 public static OSD BuildEvent(string eventName, OSD eventBody)
65 { 65 {
66 OSDMap llsdEvent = new OSDMap(2); 66 OSDMap llsdEvent = new OSDMap(2);
67 llsdEvent.Add("message", new OSDString(eventName)); 67 llsdEvent.Add("message", new OSDString(eventName));
@@ -84,7 +84,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
84 OSDMap llsdBody = new OSDMap(1); 84 OSDMap llsdBody = new OSDMap(1);
85 llsdBody.Add("SimulatorInfo", arr); 85 llsdBody.Add("SimulatorInfo", arr);
86 86
87 return buildEvent("EnableSimulator", llsdBody); 87 return BuildEvent("EnableSimulator", llsdBody);
88 } 88 }
89 89
90 public static OSD DisableSimulator(ulong handle) 90 public static OSD DisableSimulator(ulong handle)
@@ -99,7 +99,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
99 OSDMap llsdBody = new OSDMap(0); 99 OSDMap llsdBody = new OSDMap(0);
100 //llsdBody.Add("SimulatorInfo", arr); 100 //llsdBody.Add("SimulatorInfo", arr);
101 101
102 return buildEvent("DisableSimulator", llsdBody); 102 return BuildEvent("DisableSimulator", llsdBody);
103 } 103 }
104 104
105 public static OSD CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt, 105 public static OSD CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt,
@@ -144,7 +144,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
144 llsdBody.Add("AgentData", agentDataArr); 144 llsdBody.Add("AgentData", agentDataArr);
145 llsdBody.Add("RegionData", regionDataArr); 145 llsdBody.Add("RegionData", regionDataArr);
146 146
147 return buildEvent("CrossedRegion", llsdBody); 147 return BuildEvent("CrossedRegion", llsdBody);
148 } 148 }
149 149
150 public static OSD TeleportFinishEvent( 150 public static OSD TeleportFinishEvent(
@@ -167,7 +167,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
167 OSDMap body = new OSDMap(); 167 OSDMap body = new OSDMap();
168 body.Add("Info", infoArr); 168 body.Add("Info", infoArr);
169 169
170 return buildEvent("TeleportFinish", body); 170 return BuildEvent("TeleportFinish", body);
171 } 171 }
172 172
173 public static OSD ScriptRunningReplyEvent(UUID objectID, UUID itemID, bool running, bool mono) 173 public static OSD ScriptRunningReplyEvent(UUID objectID, UUID itemID, bool running, bool mono)
@@ -184,7 +184,7 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
184 OSDMap body = new OSDMap(); 184 OSDMap body = new OSDMap();
185 body.Add("Script", scriptArr); 185 body.Add("Script", scriptArr);
186 186
187 return buildEvent("ScriptRunningReply", body); 187 return BuildEvent("ScriptRunningReply", body);
188 } 188 }
189 189
190 public static OSD EstablishAgentCommunication(UUID agentID, string simIpAndPort, string seedcap) 190 public static OSD EstablishAgentCommunication(UUID agentID, string simIpAndPort, string seedcap)
@@ -194,12 +194,12 @@ namespace OpenSim.Region.CoreModules.Framework.EventQueue
194 body.Add("sim-ip-and-port", new OSDString(simIpAndPort)); 194 body.Add("sim-ip-and-port", new OSDString(simIpAndPort));
195 body.Add("seed-capability", new OSDString(seedcap)); 195 body.Add("seed-capability", new OSDString(seedcap));
196 196
197 return buildEvent("EstablishAgentCommunication", body); 197 return BuildEvent("EstablishAgentCommunication", body);
198 } 198 }
199 199
200 public static OSD KeepAliveEvent() 200 public static OSD KeepAliveEvent()
201 { 201 {
202 return buildEvent("FAKEEVENT", new OSDMap()); 202 return BuildEvent("FAKEEVENT", new OSDMap());
203 } 203 }
204 204
205 public static OSD AgentParams(UUID agentID, bool checkEstate, int godLevel, bool limitedToEstate) 205 public static OSD AgentParams(UUID agentID, bool checkEstate, int godLevel, bool limitedToEstate)
diff --git a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs b/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
index 1d8e70e..111d808 100644
--- a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using System.Reflection; 31using System.Reflection;
32using log4net; 32using log4net;
33using Nini.Config; 33using Nini.Config;
34using Mono.Addins;
34using OpenMetaverse; 35using OpenMetaverse;
35using OpenSim.Framework; 36using OpenSim.Framework;
36using OpenSim.Framework.Console; 37using OpenSim.Framework.Console;
@@ -38,8 +39,9 @@ using OpenSim.Region.Framework.Interfaces;
38using OpenSim.Region.Framework.Scenes; 39using OpenSim.Region.Framework.Scenes;
39using Caps=OpenSim.Framework.Capabilities.Caps; 40using Caps=OpenSim.Framework.Capabilities.Caps;
40 41
41namespace OpenSim.Region.CoreModules.Agent.Capabilities 42namespace OpenSim.Region.CoreModules.Framework
42{ 43{
44 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
43 public class CapabilitiesModule : INonSharedRegionModule, ICapabilitiesModule 45 public class CapabilitiesModule : INonSharedRegionModule, ICapabilitiesModule
44 { 46 {
45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -49,7 +51,7 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities
49 /// <summary> 51 /// <summary>
50 /// Each agent has its own capabilities handler. 52 /// Each agent has its own capabilities handler.
51 /// </summary> 53 /// </summary>
52 protected Dictionary<UUID, Caps> m_capsHandlers = new Dictionary<UUID, Caps>(); 54 protected Dictionary<UUID, Caps> m_capsObjects = new Dictionary<UUID, Caps>();
53 55
54 protected Dictionary<UUID, string> capsPaths = new Dictionary<UUID, string>(); 56 protected Dictionary<UUID, string> capsPaths = new Dictionary<UUID, string>();
55 protected Dictionary<UUID, Dictionary<ulong, string>> childrenSeeds 57 protected Dictionary<UUID, Dictionary<ulong, string>> childrenSeeds
@@ -93,19 +95,19 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities
93 get { return null; } 95 get { return null; }
94 } 96 }
95 97
96 public void AddCapsHandler(UUID agentId) 98 public void CreateCaps(UUID agentId)
97 { 99 {
98 if (m_scene.RegionInfo.EstateSettings.IsBanned(agentId)) 100 if (m_scene.RegionInfo.EstateSettings.IsBanned(agentId))
99 return; 101 return;
100 102
101 String capsObjectPath = GetCapsPath(agentId); 103 String capsObjectPath = GetCapsPath(agentId);
102 104
103 if (m_capsHandlers.ContainsKey(agentId)) 105 if (m_capsObjects.ContainsKey(agentId))
104 { 106 {
105 Caps oldCaps = m_capsHandlers[agentId]; 107 Caps oldCaps = m_capsObjects[agentId];
106 108
107 m_log.DebugFormat( 109 m_log.DebugFormat(
108 "[CAPS]: Reregistering caps for agent {0}. Old caps path {1}, new caps path {2}. ", 110 "[CAPS]: Recreating caps for agent {0}. Old caps path {1}, new caps path {2}. ",
109 agentId, oldCaps.CapsObjectPath, capsObjectPath); 111 agentId, oldCaps.CapsObjectPath, capsObjectPath);
110 // This should not happen. The caller code is confused. We need to fix that. 112 // This should not happen. The caller code is confused. We need to fix that.
111 // CAPs can never be reregistered, or the client will be confused. 113 // CAPs can never be reregistered, or the client will be confused.
@@ -113,39 +115,29 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities
113 //return; 115 //return;
114 } 116 }
115 117
116 Caps caps 118 Caps caps = new Caps(MainServer.Instance, m_scene.RegionInfo.ExternalHostName,
117 = new Caps(m_scene,
118 m_scene.AssetService, MainServer.Instance, m_scene.RegionInfo.ExternalHostName,
119 (MainServer.Instance == null) ? 0: MainServer.Instance.Port, 119 (MainServer.Instance == null) ? 0: MainServer.Instance.Port,
120 capsObjectPath, agentId, m_scene.DumpAssetsToFile, m_scene.RegionInfo.RegionName); 120 capsObjectPath, agentId, m_scene.RegionInfo.RegionName);
121 121
122 caps.RegisterHandlers(); 122 m_capsObjects[agentId] = caps;
123 123
124 m_scene.EventManager.TriggerOnRegisterCaps(agentId, caps); 124 m_scene.EventManager.TriggerOnRegisterCaps(agentId, caps);
125
126 caps.AddNewInventoryItem = m_scene.AddUploadedInventoryItem;
127 caps.ItemUpdatedCall = m_scene.CapsUpdateInventoryItemAsset;
128 caps.TaskScriptUpdatedCall = m_scene.CapsUpdateTaskInventoryScriptAsset;
129 caps.CAPSFetchInventoryDescendents = m_scene.HandleFetchInventoryDescendentsCAPS;
130 caps.GetClient = m_scene.SceneContents.GetControllingClient;
131
132 m_capsHandlers[agentId] = caps;
133 } 125 }
134 126
135 public void RemoveCapsHandler(UUID agentId) 127 public void RemoveCaps(UUID agentId)
136 { 128 {
137 if (childrenSeeds.ContainsKey(agentId)) 129 if (childrenSeeds.ContainsKey(agentId))
138 { 130 {
139 childrenSeeds.Remove(agentId); 131 childrenSeeds.Remove(agentId);
140 } 132 }
141 133
142 lock (m_capsHandlers) 134 lock (m_capsObjects)
143 { 135 {
144 if (m_capsHandlers.ContainsKey(agentId)) 136 if (m_capsObjects.ContainsKey(agentId))
145 { 137 {
146 m_capsHandlers[agentId].DeregisterHandlers(); 138 m_capsObjects[agentId].DeregisterHandlers();
147 m_scene.EventManager.TriggerOnDeregisterCaps(agentId, m_capsHandlers[agentId]); 139 m_scene.EventManager.TriggerOnDeregisterCaps(agentId, m_capsObjects[agentId]);
148 m_capsHandlers.Remove(agentId); 140 m_capsObjects.Remove(agentId);
149 } 141 }
150 else 142 else
151 { 143 {
@@ -156,20 +148,20 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities
156 } 148 }
157 } 149 }
158 150
159 public Caps GetCapsHandlerForUser(UUID agentId) 151 public Caps GetCapsForUser(UUID agentId)
160 { 152 {
161 lock (m_capsHandlers) 153 lock (m_capsObjects)
162 { 154 {
163 if (m_capsHandlers.ContainsKey(agentId)) 155 if (m_capsObjects.ContainsKey(agentId))
164 { 156 {
165 return m_capsHandlers[agentId]; 157 return m_capsObjects[agentId];
166 } 158 }
167 } 159 }
168 160
169 return null; 161 return null;
170 } 162 }
171 163
172 public void NewUserConnection(AgentCircuitData agent) 164 public void SetAgentCapsSeeds(AgentCircuitData agent)
173 { 165 {
174 capsPaths[agent.AgentID] = agent.CapsPath; 166 capsPaths[agent.AgentID] = agent.CapsPath;
175 childrenSeeds[agent.AgentID] 167 childrenSeeds[agent.AgentID]
@@ -239,7 +231,7 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities
239 System.Text.StringBuilder caps = new System.Text.StringBuilder(); 231 System.Text.StringBuilder caps = new System.Text.StringBuilder();
240 caps.AppendFormat("Region {0}:\n", m_scene.RegionInfo.RegionName); 232 caps.AppendFormat("Region {0}:\n", m_scene.RegionInfo.RegionName);
241 233
242 foreach (KeyValuePair<UUID, Caps> kvp in m_capsHandlers) 234 foreach (KeyValuePair<UUID, Caps> kvp in m_capsObjects)
243 { 235 {
244 caps.AppendFormat("** User {0}:\n", kvp.Key); 236 caps.AppendFormat("** User {0}:\n", kvp.Key);
245 for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.CapsDetails.GetEnumerator(); kvp2.MoveNext(); ) 237 for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.CapsDetails.GetEnumerator(); kvp2.MoveNext(); )
@@ -247,6 +239,8 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities
247 Uri uri = new Uri(kvp2.Value.ToString()); 239 Uri uri = new Uri(kvp2.Value.ToString());
248 caps.AppendFormat(" {0} = {1}\n", kvp2.Key, uri.PathAndQuery); 240 caps.AppendFormat(" {0} = {1}\n", kvp2.Key, uri.PathAndQuery);
249 } 241 }
242 foreach (KeyValuePair<string, string> kvp3 in kvp.Value.ExternalCapsHandlers)
243 caps.AppendFormat(" {0} = {1}\n", kvp3.Key, kvp3.Value);
250 } 244 }
251 245
252 MainConsole.Instance.Output(caps.ToString()); 246 MainConsole.Instance.Output(caps.ToString());
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index b985fbb..e380067 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -1759,11 +1759,15 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
1759 1759
1760 protected void ReInstantiateScripts(ScenePresence sp) 1760 protected void ReInstantiateScripts(ScenePresence sp)
1761 { 1761 {
1762 int i = 0;
1762 sp.Attachments.ForEach(delegate(SceneObjectGroup sog) 1763 sp.Attachments.ForEach(delegate(SceneObjectGroup sog)
1763 { 1764 {
1765 sog.SetState(sp.InTransitScriptStates[i++], sp.Scene);
1764 sog.CreateScriptInstances(0, false, sp.Scene.DefaultScriptEngine, 0); 1766 sog.CreateScriptInstances(0, false, sp.Scene.DefaultScriptEngine, 0);
1765 sog.ResumeScripts(); 1767 sog.ResumeScripts();
1766 }); 1768 });
1769
1770 sp.InTransitScriptStates.Clear();
1767 } 1771 }
1768 #endregion 1772 #endregion
1769 1773
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 6b3df9d..1370b1f 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -371,7 +371,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
371 } 371 }
372 372
373 // This is a hook to do some per-asset post-processing for subclasses that need that 373 // This is a hook to do some per-asset post-processing for subclasses that need that
374 ExportAsset(remoteClient.AgentId, assetID); 374 if (remoteClient != null)
375 ExportAsset(remoteClient.AgentId, assetID);
375 376
376 return assetID; 377 return assetID;
377 } 378 }