diff options
Diffstat (limited to 'OpenSim/Region')
8 files changed, 146 insertions, 19 deletions
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 1c84e3f..34b2975 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs | |||
@@ -294,6 +294,18 @@ namespace OpenSim | |||
294 | "show connections", | 294 | "show connections", |
295 | "Show connection data", HandleShow); | 295 | "Show connection data", HandleShow); |
296 | 296 | ||
297 | m_console.Commands.AddCommand("region", false, "show circuits", | ||
298 | "show circuits", | ||
299 | "Show agent circuit data", HandleShow); | ||
300 | |||
301 | m_console.Commands.AddCommand("region", false, "show http-handlers", | ||
302 | "show http-handlers", | ||
303 | "Show all registered http handlers", HandleShow); | ||
304 | |||
305 | m_console.Commands.AddCommand("region", false, "show pending-objects", | ||
306 | "show pending-objects", | ||
307 | "Show # of objects on the pending queues of all scene viewers", HandleShow); | ||
308 | |||
297 | m_console.Commands.AddCommand("region", false, "show modules", | 309 | m_console.Commands.AddCommand("region", false, "show modules", |
298 | "show modules", | 310 | "show modules", |
299 | "Show module data", HandleShow); | 311 | "Show module data", HandleShow); |
@@ -943,6 +955,66 @@ namespace OpenSim | |||
943 | MainConsole.Instance.Output(connections.ToString()); | 955 | MainConsole.Instance.Output(connections.ToString()); |
944 | break; | 956 | break; |
945 | 957 | ||
958 | case "circuits": | ||
959 | System.Text.StringBuilder acd = new System.Text.StringBuilder("Agent Circuits:\n"); | ||
960 | m_sceneManager.ForEachScene( | ||
961 | delegate(Scene scene) | ||
962 | { | ||
963 | //this.HttpServer. | ||
964 | acd.AppendFormat("{0}:\n", scene.RegionInfo.RegionName); | ||
965 | foreach (AgentCircuitData aCircuit in scene.AuthenticateHandler.AgentCircuits.Values) | ||
966 | acd.AppendFormat("\t{0} {1} ({2})\n", aCircuit.firstname, aCircuit.lastname, (aCircuit.child ? "Child" : "Root")); | ||
967 | } | ||
968 | ); | ||
969 | |||
970 | MainConsole.Instance.Output(acd.ToString()); | ||
971 | break; | ||
972 | |||
973 | case "http-handlers": | ||
974 | System.Text.StringBuilder handlers = new System.Text.StringBuilder("Registered HTTP Handlers:\n"); | ||
975 | |||
976 | handlers.AppendFormat("* XMLRPC:\n"); | ||
977 | foreach (String s in HttpServer.GetXmlRpcHandlerKeys()) | ||
978 | handlers.AppendFormat("\t{0}\n", s); | ||
979 | |||
980 | handlers.AppendFormat("* HTTP:\n"); | ||
981 | List<String> poll = HttpServer.GetPollServiceHandlerKeys(); | ||
982 | foreach (String s in HttpServer.GetHTTPHandlerKeys()) | ||
983 | handlers.AppendFormat("\t{0} {1}\n", s, (poll.Contains(s) ? "(poll service)" : string.Empty)); | ||
984 | |||
985 | handlers.AppendFormat("* Agent:\n"); | ||
986 | foreach (String s in HttpServer.GetAgentHandlerKeys()) | ||
987 | handlers.AppendFormat("\t{0}\n", s); | ||
988 | |||
989 | handlers.AppendFormat("* LLSD:\n"); | ||
990 | foreach (String s in HttpServer.GetLLSDHandlerKeys()) | ||
991 | handlers.AppendFormat("\t{0}\n", s); | ||
992 | |||
993 | handlers.AppendFormat("* StreamHandlers ({0}):\n", HttpServer.GetStreamHandlerKeys().Count); | ||
994 | foreach (String s in HttpServer.GetStreamHandlerKeys()) | ||
995 | handlers.AppendFormat("\t{0}\n", s); | ||
996 | |||
997 | MainConsole.Instance.Output(handlers.ToString()); | ||
998 | break; | ||
999 | |||
1000 | case "pending-objects": | ||
1001 | System.Text.StringBuilder pending = new System.Text.StringBuilder("Pending objects:\n"); | ||
1002 | m_sceneManager.ForEachScene( | ||
1003 | delegate(Scene scene) | ||
1004 | { | ||
1005 | scene.ForEachScenePresence( | ||
1006 | delegate(ScenePresence sp) | ||
1007 | { | ||
1008 | pending.AppendFormat("{0}: {1} {2} pending\n", | ||
1009 | scene.RegionInfo.RegionName, sp.Name, sp.SceneViewer.GetPendingObjectsCount()); | ||
1010 | } | ||
1011 | ); | ||
1012 | } | ||
1013 | ); | ||
1014 | |||
1015 | MainConsole.Instance.Output(pending.ToString()); | ||
1016 | break; | ||
1017 | |||
946 | case "modules": | 1018 | case "modules": |
947 | MainConsole.Instance.Output("The currently loaded shared modules are:"); | 1019 | MainConsole.Instance.Output("The currently loaded shared modules are:"); |
948 | foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) | 1020 | foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index 9d40688..d762bef 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs | |||
@@ -141,31 +141,46 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
141 | private void ProcessQueues() | 141 | private void ProcessQueues() |
142 | { | 142 | { |
143 | // Process all the pending adds | 143 | // Process all the pending adds |
144 | |||
144 | OutgoingPacket pendingAdd; | 145 | OutgoingPacket pendingAdd; |
145 | while (m_pendingAdds.TryDequeue(out pendingAdd)) | 146 | if (m_pendingAdds != null) |
146 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; | 147 | { |
148 | while (m_pendingAdds.TryDequeue(out pendingAdd)) | ||
149 | { | ||
150 | if (pendingAdd != null && m_packets != null) | ||
151 | { | ||
152 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; | ||
153 | } | ||
154 | } | ||
155 | } | ||
147 | 156 | ||
148 | // Process all the pending removes, including updating statistics and round-trip times | 157 | // Process all the pending removes, including updating statistics and round-trip times |
149 | PendingAck pendingRemove; | 158 | PendingAck pendingRemove; |
150 | OutgoingPacket ackedPacket; | 159 | OutgoingPacket ackedPacket; |
151 | while (m_pendingRemoves.TryDequeue(out pendingRemove)) | 160 | if (m_pendingRemoves != null) |
152 | { | 161 | { |
153 | if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) | 162 | while (m_pendingRemoves.TryDequeue(out pendingRemove)) |
154 | { | 163 | { |
155 | m_packets.Remove(pendingRemove.SequenceNumber); | 164 | if (m_pendingRemoves != null && m_packets != null) |
156 | |||
157 | // Update stats | ||
158 | Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); | ||
159 | |||
160 | if (!pendingRemove.FromResend) | ||
161 | { | 165 | { |
162 | // Calculate the round-trip time for this packet and its ACK | 166 | if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) |
163 | int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; | 167 | { |
164 | if (rtt > 0) | 168 | m_packets.Remove(pendingRemove.SequenceNumber); |
165 | ackedPacket.Client.UpdateRoundTrip(rtt); | 169 | |
170 | // Update stats | ||
171 | Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); | ||
172 | |||
173 | if (!pendingRemove.FromResend) | ||
174 | { | ||
175 | // Calculate the round-trip time for this packet and its ACK | ||
176 | int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; | ||
177 | if (rtt > 0) | ||
178 | ackedPacket.Client.UpdateRoundTrip(rtt); | ||
179 | } | ||
180 | } | ||
166 | } | 181 | } |
167 | } | 182 | } |
168 | } | 183 | } |
169 | } | 184 | } |
170 | } | 185 | } |
171 | } \ No newline at end of file | 186 | } |
diff --git a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs b/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs index 5c5cb70..7526bd2 100644 --- a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs +++ b/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs | |||
@@ -26,12 +26,14 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections; | ||
29 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
30 | using System.Reflection; | 31 | using System.Reflection; |
31 | using log4net; | 32 | using log4net; |
32 | using Nini.Config; | 33 | using Nini.Config; |
33 | using OpenMetaverse; | 34 | using OpenMetaverse; |
34 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using OpenSim.Framework.Console; | ||
35 | using OpenSim.Region.Framework.Interfaces; | 37 | using OpenSim.Region.Framework.Interfaces; |
36 | using OpenSim.Region.Framework.Scenes; | 38 | using OpenSim.Region.Framework.Scenes; |
37 | using Caps=OpenSim.Framework.Capabilities.Caps; | 39 | using Caps=OpenSim.Framework.Capabilities.Caps; |
@@ -61,6 +63,9 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities | |||
61 | { | 63 | { |
62 | m_scene = scene; | 64 | m_scene = scene; |
63 | m_scene.RegisterModuleInterface<ICapabilitiesModule>(this); | 65 | m_scene.RegisterModuleInterface<ICapabilitiesModule>(this); |
66 | MainConsole.Instance.Commands.AddCommand("Capabilities", false, "show caps", | ||
67 | "show capabilities", | ||
68 | "Shows all registered capabilities", CapabilitiesCommand); | ||
64 | } | 69 | } |
65 | 70 | ||
66 | public void RegionLoaded(Scene scene) | 71 | public void RegionLoaded(Scene scene) |
@@ -72,7 +77,9 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities | |||
72 | m_scene.UnregisterModuleInterface<ICapabilitiesModule>(this); | 77 | m_scene.UnregisterModuleInterface<ICapabilitiesModule>(this); |
73 | } | 78 | } |
74 | 79 | ||
75 | public void PostInitialise() {} | 80 | public void PostInitialise() |
81 | { | ||
82 | } | ||
76 | 83 | ||
77 | public void Close() {} | 84 | public void Close() {} |
78 | 85 | ||
@@ -227,5 +234,23 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities | |||
227 | m_log.Info(" >> "+x+", "+y+": "+kvp.Value); | 234 | m_log.Info(" >> "+x+", "+y+": "+kvp.Value); |
228 | } | 235 | } |
229 | } | 236 | } |
237 | |||
238 | private void CapabilitiesCommand(string module, string[] cmdparams) | ||
239 | { | ||
240 | System.Text.StringBuilder caps = new System.Text.StringBuilder(); | ||
241 | caps.AppendFormat("Region {0}:\n", m_scene.RegionInfo.RegionName); | ||
242 | |||
243 | foreach (KeyValuePair<UUID, Caps> kvp in m_capsHandlers) | ||
244 | { | ||
245 | caps.AppendFormat("** User {0}:\n", kvp.Key); | ||
246 | for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.CapsDetails.GetEnumerator(); kvp2.MoveNext(); ) | ||
247 | { | ||
248 | Uri uri = new Uri(kvp2.Value.ToString()); | ||
249 | caps.AppendFormat(" {0} = {1}\n", kvp2.Key, uri.PathAndQuery); | ||
250 | } | ||
251 | } | ||
252 | |||
253 | MainConsole.Instance.Output(caps.ToString()); | ||
254 | } | ||
230 | } | 255 | } |
231 | } | 256 | } |
diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml index 43de2ab..a9d247a 100644 --- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml +++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml | |||
@@ -47,7 +47,6 @@ | |||
47 | <RegionModule id="RemoteAuthorizationServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization.RemoteAuthorizationServicesConnector" /> | 47 | <RegionModule id="RemoteAuthorizationServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization.RemoteAuthorizationServicesConnector" /> |
48 | <RegionModule id="HGAssetBroker" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.HGAssetBroker" /> | 48 | <RegionModule id="HGAssetBroker" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset.HGAssetBroker" /> |
49 | <RegionModule id="LocalInventoryServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.LocalInventoryServicesConnector" /> | 49 | <RegionModule id="LocalInventoryServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.LocalInventoryServicesConnector" /> |
50 | <RegionModule id="RemoteInventoryServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.RemoteInventoryServicesConnector" /> | ||
51 | <RegionModule id="RemoteXInventoryServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.RemoteXInventoryServicesConnector" /> | 50 | <RegionModule id="RemoteXInventoryServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.RemoteXInventoryServicesConnector" /> |
52 | <RegionModule id="HGInventoryBroker" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.HGInventoryBroker" /> | 51 | <RegionModule id="HGInventoryBroker" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory.HGInventoryBroker" /> |
53 | <RegionModule id="LocalNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.LocalNeighbourServicesConnector" /> | 52 | <RegionModule id="LocalNeighbourServicesConnector" type="OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour.LocalNeighbourServicesConnector" /> |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs index 023a44c..3c36799 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs | |||
@@ -247,13 +247,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid | |||
247 | 247 | ||
248 | public void NeighboursCommand(string module, string[] cmdparams) | 248 | public void NeighboursCommand(string module, string[] cmdparams) |
249 | { | 249 | { |
250 | System.Text.StringBuilder caps = new System.Text.StringBuilder(); | ||
251 | |||
250 | foreach (KeyValuePair<UUID, RegionCache> kvp in m_LocalCache) | 252 | foreach (KeyValuePair<UUID, RegionCache> kvp in m_LocalCache) |
251 | { | 253 | { |
252 | m_log.InfoFormat("*** Neighbours of {0} {1} ***", kvp.Key, kvp.Value.RegionName); | 254 | caps.AppendFormat("*** Neighbours of {0} ({1}) ***\n", kvp.Value.RegionName, kvp.Key); |
253 | List<GridRegion> regions = kvp.Value.GetNeighbours(); | 255 | List<GridRegion> regions = kvp.Value.GetNeighbours(); |
254 | foreach (GridRegion r in regions) | 256 | foreach (GridRegion r in regions) |
255 | m_log.InfoFormat(" {0} @ {1}={2}", r.RegionName, r.RegionLocX / Constants.RegionSize, r.RegionLocY / Constants.RegionSize); | 257 | caps.AppendFormat(" {0} @ {1}-{2}\n", r.RegionName, r.RegionLocX / Constants.RegionSize, r.RegionLocY / Constants.RegionSize); |
256 | } | 258 | } |
259 | |||
260 | MainConsole.Instance.Output(caps.ToString()); | ||
257 | } | 261 | } |
258 | 262 | ||
259 | } | 263 | } |
diff --git a/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs b/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs index 7251d57..2397f22 100644 --- a/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs +++ b/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs | |||
@@ -36,5 +36,6 @@ namespace OpenSim.Region.Framework.Interfaces | |||
36 | void Close(); | 36 | void Close(); |
37 | void QueuePartForUpdate(SceneObjectPart part); | 37 | void QueuePartForUpdate(SceneObjectPart part); |
38 | void SendPrimUpdates(); | 38 | void SendPrimUpdates(); |
39 | int GetPendingObjectsCount(); | ||
39 | } | 40 | } |
40 | } | 41 | } |
diff --git a/OpenSim/Region/Framework/Scenes/SceneViewer.cs b/OpenSim/Region/Framework/Scenes/SceneViewer.cs index 40a73a9..1f4ec96 100644 --- a/OpenSim/Region/Framework/Scenes/SceneViewer.cs +++ b/OpenSim/Region/Framework/Scenes/SceneViewer.cs | |||
@@ -205,6 +205,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
205 | Reset(); | 205 | Reset(); |
206 | } | 206 | } |
207 | 207 | ||
208 | public int GetPendingObjectsCount() | ||
209 | { | ||
210 | if (m_pendingObjects != null) | ||
211 | return m_pendingObjects.Count; | ||
212 | |||
213 | return 0; | ||
214 | } | ||
215 | |||
208 | public class ScenePartUpdate | 216 | public class ScenePartUpdate |
209 | { | 217 | { |
210 | public UUID FullID; | 218 | public UUID FullID; |
diff --git a/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs index d4b7020..cee8851 100644 --- a/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs +++ b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs | |||
@@ -71,6 +71,9 @@ namespace OpenSim.Region.OptionalModules.World.WorldView | |||
71 | 71 | ||
72 | public void RegionLoaded(Scene scene) | 72 | public void RegionLoaded(Scene scene) |
73 | { | 73 | { |
74 | if (!m_Enabled) | ||
75 | return; | ||
76 | |||
74 | m_Generator = scene.RequestModuleInterface<IMapImageGenerator>(); | 77 | m_Generator = scene.RequestModuleInterface<IMapImageGenerator>(); |
75 | if (m_Generator == null) | 78 | if (m_Generator == null) |
76 | { | 79 | { |