aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs13
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs32
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs114
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs3
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs25
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs12
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs1
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs6
-rw-r--r--OpenSim/Region/UserStatistics/WebStatsModule.cs197
11 files changed, 192 insertions, 215 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs
index eb1e4b5..8101ca2 100644
--- a/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Profile/BasicProfileModule.cs
@@ -150,7 +150,16 @@ namespace OpenSim.Region.CoreModules.Avatar.Profile
150 string skillsText = String.Empty; 150 string skillsText = String.Empty;
151 string languages = String.Empty; 151 string languages = String.Empty;
152 152
153 Byte[] charterMember = Utils.StringToBytes("Avatar"); 153 UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, avatarID);
154
155 string name = "Avatar";
156 int created = 0;
157 if (account != null)
158 {
159 name = account.FirstName + " " + account.LastName;
160 created = account.Created;
161 }
162 Byte[] charterMember = Utils.StringToBytes(name);
154 163
155 profileUrl = "No profile data"; 164 profileUrl = "No profile data";
156 aboutText = string.Empty; 165 aboutText = string.Empty;
@@ -160,7 +169,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Profile
160 partner = UUID.Zero; 169 partner = UUID.Zero;
161 170
162 remoteClient.SendAvatarProperties(avatarID, aboutText, 171 remoteClient.SendAvatarProperties(avatarID, aboutText,
163 Util.ToDateTime(0).ToString( 172 Util.ToDateTime(created).ToString(
164 "M/d/yyyy", CultureInfo.InvariantCulture), 173 "M/d/yyyy", CultureInfo.InvariantCulture),
165 charterMember, firstLifeAboutText, 174 charterMember, firstLifeAboutText,
166 (uint)(0 & 0xff), 175 (uint)(0 & 0xff),
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
index 0c4ff7f..d2fe388 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs
@@ -117,7 +117,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
117 string userAssetServer = string.Empty; 117 string userAssetServer = string.Empty;
118 if (IsForeignUser(avatarID, out userAssetServer) && userAssetServer != string.Empty && m_OutboundPermission) 118 if (IsForeignUser(avatarID, out userAssetServer) && userAssetServer != string.Empty && m_OutboundPermission)
119 { 119 {
120 Util.FireAndForget(delegate { m_assMapper.Post(assetID, avatarID, userAssetServer); }); 120 m_assMapper.Post(assetID, avatarID, userAssetServer);
121 } 121 }
122 } 122 }
123 123
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
index 74b047b..fd122da 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
@@ -132,7 +132,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
132 { 132 {
133 } 133 }
134 134
135 public Type ReplaceableInterface 135 public Type ReplaceableInterface
136 { 136 {
137 get { return null; } 137 get { return null; }
138 } 138 }
@@ -220,7 +220,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
220 // There is a major hack going on in this method. The viewer doesn't request 220 // There is a major hack going on in this method. The viewer doesn't request
221 // map blocks (RequestMapBlocks) above 2048. That means that if we don't hack, 221 // map blocks (RequestMapBlocks) above 2048. That means that if we don't hack,
222 // grids above that cell don't have a map at all. So, here's the hack: we wait 222 // grids above that cell don't have a map at all. So, here's the hack: we wait
223 // for this CAP request to come, and we inject the map blocks at this point. 223 // for this CAP request to come, and we inject the map blocks at this point.
224 // In a normal scenario, this request simply sends back the MapLayer (the blue color). 224 // In a normal scenario, this request simply sends back the MapLayer (the blue color).
225 // In the hacked scenario, it also sends the map blocks via UDP. 225 // In the hacked scenario, it also sends the map blocks via UDP.
226 // 226 //
@@ -751,7 +751,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
751 { 751 {
752 uint x = 0, y = 0; 752 uint x = 0, y = 0;
753 Utils.LongToUInts(regionhandle, out x, out y); 753 Utils.LongToUInts(regionhandle, out x, out y);
754 GridRegion mreg = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, (int)x, (int)y); 754 GridRegion mreg = m_scene.GridService.GetRegionByPosition(m_scene.RegionInfo.ScopeID, (int)x, (int)y);
755 755
756 if (mreg != null) 756 if (mreg != null)
757 { 757 {
@@ -857,7 +857,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
857 finally 857 finally
858 { 858 {
859 if (os != null) 859 if (os != null)
860 os.Close(); 860 os.Close();
861 } 861 }
862 862
863 string response_mapItems_reply = null; 863 string response_mapItems_reply = null;
@@ -960,16 +960,16 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
960 // on an unloaded square. 960 // on an unloaded square.
961 // But make sure: Look whether the one we requested is in there 961 // But make sure: Look whether the one we requested is in there
962 List<GridRegion> regions = m_scene.GridService.GetRegionRange(m_scene.RegionInfo.ScopeID, 962 List<GridRegion> regions = m_scene.GridService.GetRegionRange(m_scene.RegionInfo.ScopeID,
963 minX * (int)Constants.RegionSize, 963 minX * (int)Constants.RegionSize,
964 maxX * (int)Constants.RegionSize, 964 maxX * (int)Constants.RegionSize,
965 minY * (int)Constants.RegionSize, 965 minY * (int)Constants.RegionSize,
966 maxY * (int)Constants.RegionSize); 966 maxY * (int)Constants.RegionSize);
967 967
968 if (regions != null) 968 if (regions != null)
969 { 969 {
970 foreach (GridRegion r in regions) 970 foreach (GridRegion r in regions)
971 { 971 {
972 if ((r.RegionLocX == minX * (int)Constants.RegionSize) && 972 if ((r.RegionLocX == minX * (int)Constants.RegionSize) &&
973 (r.RegionLocY == minY * (int)Constants.RegionSize)) 973 (r.RegionLocY == minY * (int)Constants.RegionSize))
974 { 974 {
975 // found it => add it to response 975 // found it => add it to response
@@ -1004,7 +1004,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
1004 { 1004 {
1005 List<MapBlockData> mapBlocks = new List<MapBlockData>(); 1005 List<MapBlockData> mapBlocks = new List<MapBlockData>();
1006 List<GridRegion> regions = m_scene.GridService.GetRegionRange(m_scene.RegionInfo.ScopeID, 1006 List<GridRegion> regions = m_scene.GridService.GetRegionRange(m_scene.RegionInfo.ScopeID,
1007 (minX - 4) * (int)Constants.RegionSize, 1007 (minX - 4) * (int)Constants.RegionSize,
1008 (maxX + 4) * (int)Constants.RegionSize, 1008 (maxX + 4) * (int)Constants.RegionSize,
1009 (minY - 4) * (int)Constants.RegionSize, 1009 (minY - 4) * (int)Constants.RegionSize,
1010 (maxY + 4) * (int)Constants.RegionSize); 1010 (maxY + 4) * (int)Constants.RegionSize);
@@ -1336,7 +1336,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
1336 // Cannot create a map for a nonexistant heightmap 1336 // Cannot create a map for a nonexistant heightmap
1337 if (m_scene.Heightmap == null) 1337 if (m_scene.Heightmap == null)
1338 return; 1338 return;
1339 1339
1340 //create a texture asset of the terrain 1340 //create a texture asset of the terrain
1341 IMapImageGenerator terrain = m_scene.RequestModuleInterface<IMapImageGenerator>(); 1341 IMapImageGenerator terrain = m_scene.RequestModuleInterface<IMapImageGenerator>();
1342 if (terrain == null) 1342 if (terrain == null)
@@ -1345,7 +1345,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
1345 byte[] data = terrain.WriteJpeg2000Image(); 1345 byte[] data = terrain.WriteJpeg2000Image();
1346 if (data == null) 1346 if (data == null)
1347 return; 1347 return;
1348 1348
1349 byte[] overlay = GenerateOverlay(); 1349 byte[] overlay = GenerateOverlay();
1350 1350
1351 m_log.Debug("[WORLDMAP]: STORING MAPTILE IMAGE"); 1351 m_log.Debug("[WORLDMAP]: STORING MAPTILE IMAGE");
@@ -1366,7 +1366,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
1366 // Store the new one 1366 // Store the new one
1367 m_log.DebugFormat("[WORLDMAP]: Storing map tile {0}", asset.ID); 1367 m_log.DebugFormat("[WORLDMAP]: Storing map tile {0}", asset.ID);
1368 m_scene.AssetService.Store(asset); 1368 m_scene.AssetService.Store(asset);
1369 1369
1370 if (overlay != null) 1370 if (overlay != null)
1371 { 1371 {
1372 parcelImageID = UUID.Random(); 1372 parcelImageID = UUID.Random();
@@ -1390,7 +1390,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
1390 m_scene.RegionInfo.RegionSettings.TerrainImageID = terrainImageID; 1390 m_scene.RegionInfo.RegionSettings.TerrainImageID = terrainImageID;
1391 m_scene.RegionInfo.RegionSettings.ParcelImageID = parcelImageID; 1391 m_scene.RegionInfo.RegionSettings.ParcelImageID = parcelImageID;
1392 m_scene.RegionInfo.RegionSettings.Save(); 1392 m_scene.RegionInfo.RegionSettings.Save();
1393 1393
1394 // Delete the old one 1394 // Delete the old one
1395 // m_log.DebugFormat("[WORLDMAP]: Deleting old map tile {0}", lastTerrainImageID); 1395 // m_log.DebugFormat("[WORLDMAP]: Deleting old map tile {0}", lastTerrainImageID);
1396 m_scene.AssetService.Delete(lastTerrainImageID.ToString()); 1396 m_scene.AssetService.Delete(lastTerrainImageID.ToString());
@@ -1469,18 +1469,18 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
1469 if ((land.LandData.Flags & (uint)ParcelFlags.ForSale) != 0) 1469 if ((land.LandData.Flags & (uint)ParcelFlags.ForSale) != 0)
1470 { 1470 {
1471 landForSale = true; 1471 landForSale = true;
1472 1472
1473 saleBitmap = land.MergeLandBitmaps(saleBitmap, land.GetLandBitmap()); 1473 saleBitmap = land.MergeLandBitmaps(saleBitmap, land.GetLandBitmap());
1474 } 1474 }
1475 } 1475 }
1476 1476
1477 if (!landForSale) 1477 if (!landForSale)
1478 { 1478 {
1479 m_log.DebugFormat("[WORLD MAP]: Region {0} has no parcels for sale, not geenrating overlay", m_scene.RegionInfo.RegionName); 1479 m_log.DebugFormat("[WORLD MAP]: Region {0} has no parcels for sale, not generating overlay", m_scene.RegionInfo.RegionName);
1480 return null; 1480 return null;
1481 } 1481 }
1482 1482
1483 m_log.DebugFormat("[WORLD MAP]: Region {0} has parcels for sale, genrating overlay", m_scene.RegionInfo.RegionName); 1483 m_log.DebugFormat("[WORLD MAP]: Region {0} has parcels for sale, generating overlay", m_scene.RegionInfo.RegionName);
1484 1484
1485 for (int x = 0 ; x < 64 ; x++) 1485 for (int x = 0 ; x < 64 ; x++)
1486 { 1486 {
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 40c8d06..ec6bb89 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -343,13 +343,7 @@ namespace OpenSim.Region.Framework.Scenes
343 /// </summary> 343 /// </summary>
344 protected Vector3 m_lastCameraPosition; 344 protected Vector3 m_lastCameraPosition;
345 345
346 protected Vector3 m_CameraPosition; 346 public Vector3 CameraPosition { get; set; }
347
348 public Vector3 CameraPosition
349 {
350 get { return m_CameraPosition; }
351 private set { m_CameraPosition = value; }
352 }
353 347
354 public Quaternion CameraRotation 348 public Quaternion CameraRotation
355 { 349 {
@@ -359,28 +353,9 @@ namespace OpenSim.Region.Framework.Scenes
359 // Use these three vectors to figure out what the agent is looking at 353 // Use these three vectors to figure out what the agent is looking at
360 // Convert it to a Matrix and/or Quaternion 354 // Convert it to a Matrix and/or Quaternion
361 // 355 //
362 protected Vector3 m_CameraAtAxis; 356 public Vector3 CameraAtAxis { get; set; }
363 protected Vector3 m_CameraLeftAxis; 357 public Vector3 CameraLeftAxis { get; set; }
364 protected Vector3 m_CameraUpAxis; 358 public Vector3 CameraUpAxis { get; set; }
365
366 public Vector3 CameraAtAxis
367 {
368 get { return m_CameraAtAxis; }
369 private set { m_CameraAtAxis = value; }
370 }
371
372
373 public Vector3 CameraLeftAxis
374 {
375 get { return m_CameraLeftAxis; }
376 private set { m_CameraLeftAxis = value; }
377 }
378
379 public Vector3 CameraUpAxis
380 {
381 get { return m_CameraUpAxis; }
382 private set { m_CameraUpAxis = value; }
383 }
384 359
385 public Vector3 Lookat 360 public Vector3 Lookat
386 { 361 {
@@ -396,33 +371,15 @@ namespace OpenSim.Region.Framework.Scenes
396 } 371 }
397 #endregion 372 #endregion
398 373
399 public readonly string Firstname; 374 public string Firstname { get; private set; }
400 public readonly string Lastname; 375 public string Lastname { get; private set; }
401 376
402 private string m_grouptitle; 377 public string Grouptitle { get; set; }
403
404 public string Grouptitle
405 {
406 get { return m_grouptitle; }
407 set { m_grouptitle = value; }
408 }
409 378
410 // Agent's Draw distance. 379 // Agent's Draw distance.
411 protected float m_DrawDistance; 380 public float DrawDistance { get; set; }
412
413 public float DrawDistance
414 {
415 get { return m_DrawDistance; }
416 private set { m_DrawDistance = value; }
417 }
418
419 protected bool m_allowMovement = true;
420 381
421 public bool AllowMovement 382 public bool AllowMovement { get; set; }
422 {
423 get { return m_allowMovement; }
424 set { m_allowMovement = value; }
425 }
426 383
427 private bool m_setAlwaysRun; 384 private bool m_setAlwaysRun;
428 385
@@ -449,13 +406,7 @@ namespace OpenSim.Region.Framework.Scenes
449 } 406 }
450 } 407 }
451 408
452 private byte m_state; 409 public byte State { get; set; }
453
454 public byte State
455 {
456 get { return m_state; }
457 set { m_state = value; }
458 }
459 410
460 private AgentManager.ControlFlags m_AgentControlFlags; 411 private AgentManager.ControlFlags m_AgentControlFlags;
461 412
@@ -465,29 +416,14 @@ namespace OpenSim.Region.Framework.Scenes
465 set { m_AgentControlFlags = (AgentManager.ControlFlags)value; } 416 set { m_AgentControlFlags = (AgentManager.ControlFlags)value; }
466 } 417 }
467 418
468 /// <summary> 419 public IClientAPI ControllingClient { get; set; }
469 /// This works out to be the ClientView object associated with this avatar, or it's client connection manager
470 /// </summary>
471 private IClientAPI m_controllingClient;
472
473 public IClientAPI ControllingClient
474 {
475 get { return m_controllingClient; }
476 private set { m_controllingClient = value; }
477 }
478 420
479 public IClientCore ClientView 421 public IClientCore ClientView
480 { 422 {
481 get { return (IClientCore) m_controllingClient; } 423 get { return (IClientCore)ControllingClient; }
482 } 424 }
483 425
484 protected Vector3 m_parentPosition; 426 public Vector3 ParentPosition { get; set; }
485
486 public Vector3 ParentPosition
487 {
488 get { return m_parentPosition; }
489 set { m_parentPosition = value; }
490 }
491 427
492 /// <summary> 428 /// <summary>
493 /// Position of this avatar relative to the region the avatar is in 429 /// Position of this avatar relative to the region the avatar is in
@@ -747,7 +683,7 @@ namespace OpenSim.Region.Framework.Scenes
747 IClientAPI client, Scene world, AvatarAppearance appearance, PresenceType type) 683 IClientAPI client, Scene world, AvatarAppearance appearance, PresenceType type)
748 { 684 {
749 AttachmentsSyncLock = new Object(); 685 AttachmentsSyncLock = new Object();
750 686 AllowMovement = true;
751 IsChildAgent = true; 687 IsChildAgent = true;
752 m_sendCourseLocationsMethod = SendCoarseLocationsDefault; 688 m_sendCourseLocationsMethod = SendCoarseLocationsDefault;
753 Animator = new ScenePresenceAnimator(this); 689 Animator = new ScenePresenceAnimator(this);
@@ -826,17 +762,17 @@ namespace OpenSim.Region.Framework.Scenes
826 private Vector3[] GetWalkDirectionVectors() 762 private Vector3[] GetWalkDirectionVectors()
827 { 763 {
828 Vector3[] vector = new Vector3[11]; 764 Vector3[] vector = new Vector3[11];
829 vector[0] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD 765 vector[0] = new Vector3(CameraUpAxis.Z, 0f, -CameraAtAxis.Z); //FORWARD
830 vector[1] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK 766 vector[1] = new Vector3(-CameraUpAxis.Z, 0f, CameraAtAxis.Z); //BACK
831 vector[2] = Vector3.UnitY; //LEFT 767 vector[2] = Vector3.UnitY; //LEFT
832 vector[3] = -Vector3.UnitY; //RIGHT 768 vector[3] = -Vector3.UnitY; //RIGHT
833 vector[4] = new Vector3(m_CameraAtAxis.Z, 0f, m_CameraUpAxis.Z); //UP 769 vector[4] = new Vector3(CameraAtAxis.Z, 0f, CameraUpAxis.Z); //UP
834 vector[5] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN 770 vector[5] = new Vector3(-CameraAtAxis.Z, 0f, -CameraUpAxis.Z); //DOWN
835 vector[6] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD_NUDGE 771 vector[6] = new Vector3(CameraUpAxis.Z, 0f, -CameraAtAxis.Z); //FORWARD_NUDGE
836 vector[7] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK_NUDGE 772 vector[7] = new Vector3(-CameraUpAxis.Z, 0f, CameraAtAxis.Z); //BACK_NUDGE
837 vector[8] = Vector3.UnitY; //LEFT_NUDGE 773 vector[8] = Vector3.UnitY; //LEFT_NUDGE
838 vector[9] = -Vector3.UnitY; //RIGHT_NUDGE 774 vector[9] = -Vector3.UnitY; //RIGHT_NUDGE
839 vector[10] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_NUDGE 775 vector[10] = new Vector3(-CameraAtAxis.Z, 0f, -CameraUpAxis.Z); //DOWN_NUDGE
840 return vector; 776 return vector;
841 } 777 }
842 778
@@ -1333,7 +1269,7 @@ namespace OpenSim.Region.Framework.Scenes
1333 // Convert it to a Matrix and/or Quaternion 1269 // Convert it to a Matrix and/or Quaternion
1334 CameraAtAxis = agentData.CameraAtAxis; 1270 CameraAtAxis = agentData.CameraAtAxis;
1335 CameraLeftAxis = agentData.CameraLeftAxis; 1271 CameraLeftAxis = agentData.CameraLeftAxis;
1336 m_CameraUpAxis = agentData.CameraUpAxis; 1272 CameraUpAxis = agentData.CameraUpAxis;
1337 1273
1338 // The Agent's Draw distance setting 1274 // The Agent's Draw distance setting
1339 // When we get to the point of re-computing neighbors everytime this 1275 // When we get to the point of re-computing neighbors everytime this
@@ -1345,7 +1281,7 @@ namespace OpenSim.Region.Framework.Scenes
1345 // Check if Client has camera in 'follow cam' or 'build' mode. 1281 // Check if Client has camera in 'follow cam' or 'build' mode.
1346 Vector3 camdif = (Vector3.One * Rotation - Vector3.One * CameraRotation); 1282 Vector3 camdif = (Vector3.One * Rotation - Vector3.One * CameraRotation);
1347 1283
1348 m_followCamAuto = ((m_CameraUpAxis.Z > 0.959f && m_CameraUpAxis.Z < 0.98f) 1284 m_followCamAuto = ((CameraUpAxis.Z > 0.959f && CameraUpAxis.Z < 0.98f)
1349 && (Math.Abs(camdif.X) < 0.4f && Math.Abs(camdif.Y) < 0.4f)) ? true : false; 1285 && (Math.Abs(camdif.X) < 0.4f && Math.Abs(camdif.Y) < 0.4f)) ? true : false;
1350 1286
1351 m_mouseLook = (flags & AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0; 1287 m_mouseLook = (flags & AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0;
@@ -3078,7 +3014,7 @@ namespace OpenSim.Region.Framework.Scenes
3078 cAgent.Center = CameraPosition; 3014 cAgent.Center = CameraPosition;
3079 cAgent.AtAxis = CameraAtAxis; 3015 cAgent.AtAxis = CameraAtAxis;
3080 cAgent.LeftAxis = CameraLeftAxis; 3016 cAgent.LeftAxis = CameraLeftAxis;
3081 cAgent.UpAxis = m_CameraUpAxis; 3017 cAgent.UpAxis = CameraUpAxis;
3082 3018
3083 cAgent.Far = DrawDistance; 3019 cAgent.Far = DrawDistance;
3084 3020
@@ -3164,7 +3100,7 @@ namespace OpenSim.Region.Framework.Scenes
3164 CameraPosition = cAgent.Center; 3100 CameraPosition = cAgent.Center;
3165 CameraAtAxis = cAgent.AtAxis; 3101 CameraAtAxis = cAgent.AtAxis;
3166 CameraLeftAxis = cAgent.LeftAxis; 3102 CameraLeftAxis = cAgent.LeftAxis;
3167 m_CameraUpAxis = cAgent.UpAxis; 3103 CameraUpAxis = cAgent.UpAxis;
3168 3104
3169 // When we get to the point of re-computing neighbors everytime this 3105 // When we get to the point of re-computing neighbors everytime this
3170 // changes, then start using the agent's drawdistance rather than the 3106 // changes, then start using the agent's drawdistance rather than the
diff --git a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
index e4b607d..e16903c 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
@@ -65,8 +65,7 @@ namespace OpenSim.Region.Framework.Tests
65 65
66 // Create an object embedded inside the first 66 // Create an object embedded inside the first
67 UUID taskSceneObjectItemId = UUID.Parse("00000000-0000-0000-0000-100000000000"); 67 UUID taskSceneObjectItemId = UUID.Parse("00000000-0000-0000-0000-100000000000");
68 TaskInventoryItem taskSceneObjectItem 68 TaskInventoryHelpers.AddSceneObject(scene, sop1, "tso", taskSceneObjectItemId, user1.PrincipalID);
69 = TaskInventoryHelpers.AddSceneObject(scene, sop1, "tso", taskSceneObjectItemId, user1.PrincipalID);
70 69
71 TaskInventoryItem addedItem = sop1.Inventory.GetInventoryItem(taskSceneObjectItemId); 70 TaskInventoryItem addedItem = sop1.Inventory.GetInventoryItem(taskSceneObjectItemId);
72 Assert.That(addedItem.ItemID, Is.EqualTo(taskSceneObjectItemId)); 71 Assert.That(addedItem.ItemID, Is.EqualTo(taskSceneObjectItemId));
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index c5392b5..0003515 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -4039,7 +4039,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
4039 Vector3 av3 = new Vector3(Util.Clip((float)color.x, 0.0f, 1.0f), 4039 Vector3 av3 = new Vector3(Util.Clip((float)color.x, 0.0f, 1.0f),
4040 Util.Clip((float)color.y, 0.0f, 1.0f), 4040 Util.Clip((float)color.y, 0.0f, 1.0f),
4041 Util.Clip((float)color.z, 0.0f, 1.0f)); 4041 Util.Clip((float)color.z, 0.0f, 1.0f));
4042 m_host.SetText(text.Length > 254 ? text.Remove(255) : text, av3, Util.Clip((float)alpha, 0.0f, 1.0f)); 4042 m_host.SetText(text.Length > 254 ? text.Remove(254) : text, av3, Util.Clip((float)alpha, 0.0f, 1.0f));
4043 //m_host.ParentGroup.HasGroupChanged = true; 4043 //m_host.ParentGroup.HasGroupChanged = true;
4044 //m_host.ParentGroup.ScheduleGroupForFullUpdate(); 4044 //m_host.ParentGroup.ScheduleGroupForFullUpdate();
4045 } 4045 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index ff1f5fd..8edd146 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -2160,6 +2160,31 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
2160 return result; 2160 return result;
2161 } 2161 }
2162 2162
2163 public LSL_String osReplaceString(string src, string pattern, string replace, int count, int start)
2164 {
2165 CheckThreatLevel(ThreatLevel.High, "osReplaceString");
2166 m_host.AddScriptLPS(1);
2167
2168 // Normalize indices (if negative).
2169 // After normlaization they may still be
2170 // negative, but that is now relative to
2171 // the start, rather than the end, of the
2172 // sequence.
2173 if (start < 0)
2174 {
2175 start = src.Length + start;
2176 }
2177
2178 if (start < 0 || start >= src.Length)
2179 {
2180 return src;
2181 }
2182
2183 // Find matches beginning at start position
2184 Regex matcher = new Regex(pattern);
2185 return matcher.Replace(src,replace,count,start);
2186 }
2187
2163 public string osLoadedCreationDate() 2188 public string osLoadedCreationDate()
2164 { 2189 {
2165 CheckThreatLevel(ThreatLevel.Low, "osLoadedCreationDate"); 2190 CheckThreatLevel(ThreatLevel.Low, "osLoadedCreationDate");
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
index 5c1bdff..fbb7c39 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
@@ -157,12 +157,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
157 157
158 public void CheckSenseRepeaterEvents() 158 public void CheckSenseRepeaterEvents()
159 { 159 {
160 // Nothing to do here?
161 if (SenseRepeaters.Count == 0)
162 return;
163
164 lock (SenseRepeatListLock) 160 lock (SenseRepeatListLock)
165 { 161 {
162 // Nothing to do here?
163 if (SenseRepeaters.Count == 0)
164 return;
165
166 // Go through all timers 166 // Go through all timers
167 foreach (SenseRepeatClass ts in SenseRepeaters) 167 foreach (SenseRepeatClass ts in SenseRepeaters)
168 { 168 {
@@ -635,7 +635,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
635 ts.next = 635 ts.next =
636 DateTime.Now.ToUniversalTime().AddSeconds(ts.interval); 636 DateTime.Now.ToUniversalTime().AddSeconds(ts.interval);
637 637
638 SenseRepeaters.Add(ts); 638 lock (SenseRepeatListLock)
639 SenseRepeaters.Add(ts);
640
639 idx += 6; 641 idx += 6;
640 } 642 }
641 } 643 }
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
index dbc1dfc..82a6caf 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
@@ -165,6 +165,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
165 165
166 LSL_String osFormatString(string str, LSL_List strings); 166 LSL_String osFormatString(string str, LSL_List strings);
167 LSL_List osMatchString(string src, string pattern, int start); 167 LSL_List osMatchString(string src, string pattern, int start);
168 LSL_String osReplaceString(string src, string pattern, string replace, int count, int start);
168 169
169 // Information about data loaded into the region 170 // Information about data loaded into the region
170 string osLoadedCreationDate(); 171 string osLoadedCreationDate();
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
index cc8d417..4341246 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
@@ -472,6 +472,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
472 return m_OSSL_Functions.osMatchString(src, pattern, start); 472 return m_OSSL_Functions.osMatchString(src, pattern, start);
473 } 473 }
474 474
475 public LSL_String osReplaceString(string src, string pattern, string replace, int count, int start)
476 {
477 return m_OSSL_Functions.osReplaceString(src,pattern,replace,count,start);
478 }
479
480
475 // Information about data loaded into the region 481 // Information about data loaded into the region
476 public string osLoadedCreationDate() 482 public string osLoadedCreationDate()
477 { 483 {
diff --git a/OpenSim/Region/UserStatistics/WebStatsModule.cs b/OpenSim/Region/UserStatistics/WebStatsModule.cs
index ad272f7..b9ba4bc 100644
--- a/OpenSim/Region/UserStatistics/WebStatsModule.cs
+++ b/OpenSim/Region/UserStatistics/WebStatsModule.cs
@@ -224,13 +224,11 @@ namespace OpenSim.Region.UserStatistics
224 concurrencyCounter--; 224 concurrencyCounter--;
225 225
226 response_code = 200; 226 response_code = 200;
227
228 } 227 }
229 else 228 else
230 { 229 {
231 strOut = MainServer.Instance.GetHTTP404(""); 230 strOut = MainServer.Instance.GetHTTP404("");
232 } 231 }
233
234 232
235 responsedata["int_response_code"] = response_code; 233 responsedata["int_response_code"] = response_code;
236 responsedata["content_type"] = contenttype; 234 responsedata["content_type"] = contenttype;
@@ -247,43 +245,44 @@ namespace OpenSim.Region.UserStatistics
247 // TODO: FIXME: implement stats migrations 245 // TODO: FIXME: implement stats migrations
248 const string SQL = @"SELECT * FROM migrations LIMIT 1"; 246 const string SQL = @"SELECT * FROM migrations LIMIT 1";
249 247
250 SqliteCommand cmd = new SqliteCommand(SQL, db); 248 using (SqliteCommand cmd = new SqliteCommand(SQL, db))
251
252 try
253 {
254 cmd.ExecuteNonQuery();
255 }
256 catch (SqliteSyntaxException)
257 { 249 {
258 CreateTables(db); 250 try
251 {
252 cmd.ExecuteNonQuery();
253 }
254 catch (SqliteSyntaxException)
255 {
256 CreateTables(db);
257 }
259 } 258 }
260 } 259 }
261 } 260 }
262 261
263 public void CreateTables(SqliteConnection db) 262 public void CreateTables(SqliteConnection db)
264 { 263 {
265 SqliteCommand createcmd = new SqliteCommand(SQL_STATS_TABLE_CREATE, db); 264 using (SqliteCommand createcmd = new SqliteCommand(SQL_STATS_TABLE_CREATE, db))
266 createcmd.ExecuteNonQuery(); 265 {
266 createcmd.ExecuteNonQuery();
267 267
268 createcmd.CommandText = SQL_MIGRA_TABLE_CREATE; 268 createcmd.CommandText = SQL_MIGRA_TABLE_CREATE;
269 createcmd.ExecuteNonQuery(); 269 createcmd.ExecuteNonQuery();
270 }
270 } 271 }
271 272
272 public virtual void PostInitialise() 273 public virtual void PostInitialise()
273 { 274 {
274 if (!enabled) 275 if (!enabled)
275 {
276 return; 276 return;
277 } 277
278 AddHandlers(); 278 AddHandlers();
279 } 279 }
280 280
281 public virtual void Close() 281 public virtual void Close()
282 { 282 {
283 if (!enabled) 283 if (!enabled)
284 {
285 return; 284 return;
286 } 285
287 dbConn.Close(); 286 dbConn.Close();
288 dbConn.Dispose(); 287 dbConn.Dispose();
289 m_sessions.Clear(); 288 m_sessions.Clear();
@@ -304,7 +303,8 @@ namespace OpenSim.Region.UserStatistics
304 303
305 public void OnRegisterCaps(UUID agentID, Caps caps) 304 public void OnRegisterCaps(UUID agentID, Caps caps)
306 { 305 {
307 m_log.DebugFormat("[WEB STATS MODULE]: OnRegisterCaps: agentID {0} caps {1}", agentID, caps); 306// m_log.DebugFormat("[WEB STATS MODULE]: OnRegisterCaps: agentID {0} caps {1}", agentID, caps);
307
308 string capsPath = "/CAPS/VS/" + UUID.Random(); 308 string capsPath = "/CAPS/VS/" + UUID.Random();
309 caps.RegisterHandler("ViewerStats", 309 caps.RegisterHandler("ViewerStats",
310 new RestStreamHandler("POST", capsPath, 310 new RestStreamHandler("POST", capsPath,
@@ -318,7 +318,6 @@ namespace OpenSim.Region.UserStatistics
318 318
319 public void OnDeRegisterCaps(UUID agentID, Caps caps) 319 public void OnDeRegisterCaps(UUID agentID, Caps caps)
320 { 320 {
321
322 } 321 }
323 322
324 protected virtual void AddHandlers() 323 protected virtual void AddHandlers()
@@ -368,7 +367,6 @@ namespace OpenSim.Region.UserStatistics
368 367
369 public void OnMakeChildAgent(ScenePresence agent) 368 public void OnMakeChildAgent(ScenePresence agent)
370 { 369 {
371
372 } 370 }
373 371
374 public void OnClientClosed(UUID agentID, Scene scene) 372 public void OnClientClosed(UUID agentID, Scene scene)
@@ -430,6 +428,7 @@ namespace OpenSim.Region.UserStatistics
430 return scene.RegionInfo.RegionID; 428 return scene.RegionInfo.RegionID;
431 } 429 }
432 } 430 }
431
433 return UUID.Zero; 432 return UUID.Zero;
434 } 433 }
435 434
@@ -458,14 +457,14 @@ namespace OpenSim.Region.UserStatistics
458 UserSessionData usd; 457 UserSessionData usd;
459 OSD message = OSDParser.DeserializeLLSDXml(request); 458 OSD message = OSDParser.DeserializeLLSDXml(request);
460 OSDMap mmap; 459 OSDMap mmap;
460
461 lock (m_sessions) 461 lock (m_sessions)
462 { 462 {
463 if (agentID != UUID.Zero) 463 if (agentID != UUID.Zero)
464 { 464 {
465
466 if (!m_sessions.ContainsKey(agentID)) 465 if (!m_sessions.ContainsKey(agentID))
467 { 466 {
468 m_log.Warn("[WEB STATS MODULE]: no session for stat disclosure"); 467 m_log.WarnFormat("[WEB STATS MODULE]: no session for stat disclosure for agent {0}", agentID);
469 return new UserSessionID(); 468 return new UserSessionID();
470 } 469 }
471 uid = m_sessions[agentID]; 470 uid = m_sessions[agentID];
@@ -585,8 +584,6 @@ namespace OpenSim.Region.UserStatistics
585 usd.n_out_kb = (float)net_out["kbytes"].AsReal(); 584 usd.n_out_kb = (float)net_out["kbytes"].AsReal();
586 usd.n_out_pk = net_out["packets"].AsInteger(); 585 usd.n_out_pk = net_out["packets"].AsInteger();
587 } 586 }
588
589
590 } 587 }
591 } 588 }
592 589
@@ -602,83 +599,85 @@ namespace OpenSim.Region.UserStatistics
602 599
603 lock (db) 600 lock (db)
604 { 601 {
605 SqliteCommand updatecmd = new SqliteCommand(SQL_STATS_TABLE_UPDATE, db); 602 using (SqliteCommand updatecmd = new SqliteCommand(SQL_STATS_TABLE_UPDATE, db))
606 updatecmd.Parameters.Add(new SqliteParameter(":session_id", uid.session_data.session_id.ToString()));
607 updatecmd.Parameters.Add(new SqliteParameter(":agent_id", uid.session_data.agent_id.ToString()));
608 updatecmd.Parameters.Add(new SqliteParameter(":region_id", uid.session_data.region_id.ToString()));
609 updatecmd.Parameters.Add(new SqliteParameter(":last_updated", (int) uid.session_data.last_updated));
610 updatecmd.Parameters.Add(new SqliteParameter(":remote_ip", uid.session_data.remote_ip));
611 updatecmd.Parameters.Add(new SqliteParameter(":name_f", uid.session_data.name_f));
612 updatecmd.Parameters.Add(new SqliteParameter(":name_l", uid.session_data.name_l));
613 updatecmd.Parameters.Add(new SqliteParameter(":avg_agents_in_view", uid.session_data.avg_agents_in_view));
614 updatecmd.Parameters.Add(new SqliteParameter(":min_agents_in_view",
615 (int) uid.session_data.min_agents_in_view));
616 updatecmd.Parameters.Add(new SqliteParameter(":max_agents_in_view",
617 (int) uid.session_data.max_agents_in_view));
618 updatecmd.Parameters.Add(new SqliteParameter(":mode_agents_in_view",
619 (int) uid.session_data.mode_agents_in_view));
620 updatecmd.Parameters.Add(new SqliteParameter(":avg_fps", uid.session_data.avg_fps));
621 updatecmd.Parameters.Add(new SqliteParameter(":min_fps", uid.session_data.min_fps));
622 updatecmd.Parameters.Add(new SqliteParameter(":max_fps", uid.session_data.max_fps));
623 updatecmd.Parameters.Add(new SqliteParameter(":mode_fps", uid.session_data.mode_fps));
624 updatecmd.Parameters.Add(new SqliteParameter(":a_language", uid.session_data.a_language));
625 updatecmd.Parameters.Add(new SqliteParameter(":mem_use", uid.session_data.mem_use));
626 updatecmd.Parameters.Add(new SqliteParameter(":meters_traveled", uid.session_data.meters_traveled));
627 updatecmd.Parameters.Add(new SqliteParameter(":avg_ping", uid.session_data.avg_ping));
628 updatecmd.Parameters.Add(new SqliteParameter(":min_ping", uid.session_data.min_ping));
629 updatecmd.Parameters.Add(new SqliteParameter(":max_ping", uid.session_data.max_ping));
630 updatecmd.Parameters.Add(new SqliteParameter(":mode_ping", uid.session_data.mode_ping));
631 updatecmd.Parameters.Add(new SqliteParameter(":regions_visited", uid.session_data.regions_visited));
632 updatecmd.Parameters.Add(new SqliteParameter(":run_time", uid.session_data.run_time));
633 updatecmd.Parameters.Add(new SqliteParameter(":avg_sim_fps", uid.session_data.avg_sim_fps));
634 updatecmd.Parameters.Add(new SqliteParameter(":min_sim_fps", uid.session_data.min_sim_fps));
635 updatecmd.Parameters.Add(new SqliteParameter(":max_sim_fps", uid.session_data.max_sim_fps));
636 updatecmd.Parameters.Add(new SqliteParameter(":mode_sim_fps", uid.session_data.mode_sim_fps));
637 updatecmd.Parameters.Add(new SqliteParameter(":start_time", uid.session_data.start_time));
638 updatecmd.Parameters.Add(new SqliteParameter(":client_version", uid.session_data.client_version));
639 updatecmd.Parameters.Add(new SqliteParameter(":s_cpu", uid.session_data.s_cpu));
640 updatecmd.Parameters.Add(new SqliteParameter(":s_gpu", uid.session_data.s_gpu));
641 updatecmd.Parameters.Add(new SqliteParameter(":s_os", uid.session_data.s_os));
642 updatecmd.Parameters.Add(new SqliteParameter(":s_ram", uid.session_data.s_ram));
643 updatecmd.Parameters.Add(new SqliteParameter(":d_object_kb", uid.session_data.d_object_kb));
644 updatecmd.Parameters.Add(new SqliteParameter(":d_texture_kb", uid.session_data.d_texture_kb));
645 updatecmd.Parameters.Add(new SqliteParameter(":d_world_kb", uid.session_data.d_world_kb));
646 updatecmd.Parameters.Add(new SqliteParameter(":n_in_kb", uid.session_data.n_in_kb));
647 updatecmd.Parameters.Add(new SqliteParameter(":n_in_pk", uid.session_data.n_in_pk));
648 updatecmd.Parameters.Add(new SqliteParameter(":n_out_kb", uid.session_data.n_out_kb));
649 updatecmd.Parameters.Add(new SqliteParameter(":n_out_pk", uid.session_data.n_out_pk));
650 updatecmd.Parameters.Add(new SqliteParameter(":f_dropped", uid.session_data.f_dropped));
651 updatecmd.Parameters.Add(new SqliteParameter(":f_failed_resends", uid.session_data.f_failed_resends));
652 updatecmd.Parameters.Add(new SqliteParameter(":f_invalid", uid.session_data.f_invalid));
653
654 updatecmd.Parameters.Add(new SqliteParameter(":f_off_circuit", uid.session_data.f_off_circuit));
655 updatecmd.Parameters.Add(new SqliteParameter(":f_resent", uid.session_data.f_resent));
656 updatecmd.Parameters.Add(new SqliteParameter(":f_send_packet", uid.session_data.f_send_packet));
657
658 updatecmd.Parameters.Add(new SqliteParameter(":session_key", uid.session_data.session_id.ToString()));
659 updatecmd.Parameters.Add(new SqliteParameter(":agent_key", uid.session_data.agent_id.ToString()));
660 updatecmd.Parameters.Add(new SqliteParameter(":region_key", uid.session_data.region_id.ToString()));
661// m_log.Debug("UPDATE");
662
663 int result = updatecmd.ExecuteNonQuery();
664
665 if (result == 0)
666 { 603 {
667// m_log.Debug("INSERT"); 604 updatecmd.Parameters.Add(new SqliteParameter(":session_id", uid.session_data.session_id.ToString()));
668 updatecmd.CommandText = SQL_STATS_TABLE_INSERT; 605 updatecmd.Parameters.Add(new SqliteParameter(":agent_id", uid.session_data.agent_id.ToString()));
669 try 606 updatecmd.Parameters.Add(new SqliteParameter(":region_id", uid.session_data.region_id.ToString()));
670 { 607 updatecmd.Parameters.Add(new SqliteParameter(":last_updated", (int) uid.session_data.last_updated));
671 updatecmd.ExecuteNonQuery(); 608 updatecmd.Parameters.Add(new SqliteParameter(":remote_ip", uid.session_data.remote_ip));
672 } 609 updatecmd.Parameters.Add(new SqliteParameter(":name_f", uid.session_data.name_f));
673 catch (SqliteExecutionException) 610 updatecmd.Parameters.Add(new SqliteParameter(":name_l", uid.session_data.name_l));
611 updatecmd.Parameters.Add(new SqliteParameter(":avg_agents_in_view", uid.session_data.avg_agents_in_view));
612 updatecmd.Parameters.Add(new SqliteParameter(":min_agents_in_view",
613 (int) uid.session_data.min_agents_in_view));
614 updatecmd.Parameters.Add(new SqliteParameter(":max_agents_in_view",
615 (int) uid.session_data.max_agents_in_view));
616 updatecmd.Parameters.Add(new SqliteParameter(":mode_agents_in_view",
617 (int) uid.session_data.mode_agents_in_view));
618 updatecmd.Parameters.Add(new SqliteParameter(":avg_fps", uid.session_data.avg_fps));
619 updatecmd.Parameters.Add(new SqliteParameter(":min_fps", uid.session_data.min_fps));
620 updatecmd.Parameters.Add(new SqliteParameter(":max_fps", uid.session_data.max_fps));
621 updatecmd.Parameters.Add(new SqliteParameter(":mode_fps", uid.session_data.mode_fps));
622 updatecmd.Parameters.Add(new SqliteParameter(":a_language", uid.session_data.a_language));
623 updatecmd.Parameters.Add(new SqliteParameter(":mem_use", uid.session_data.mem_use));
624 updatecmd.Parameters.Add(new SqliteParameter(":meters_traveled", uid.session_data.meters_traveled));
625 updatecmd.Parameters.Add(new SqliteParameter(":avg_ping", uid.session_data.avg_ping));
626 updatecmd.Parameters.Add(new SqliteParameter(":min_ping", uid.session_data.min_ping));
627 updatecmd.Parameters.Add(new SqliteParameter(":max_ping", uid.session_data.max_ping));
628 updatecmd.Parameters.Add(new SqliteParameter(":mode_ping", uid.session_data.mode_ping));
629 updatecmd.Parameters.Add(new SqliteParameter(":regions_visited", uid.session_data.regions_visited));
630 updatecmd.Parameters.Add(new SqliteParameter(":run_time", uid.session_data.run_time));
631 updatecmd.Parameters.Add(new SqliteParameter(":avg_sim_fps", uid.session_data.avg_sim_fps));
632 updatecmd.Parameters.Add(new SqliteParameter(":min_sim_fps", uid.session_data.min_sim_fps));
633 updatecmd.Parameters.Add(new SqliteParameter(":max_sim_fps", uid.session_data.max_sim_fps));
634 updatecmd.Parameters.Add(new SqliteParameter(":mode_sim_fps", uid.session_data.mode_sim_fps));
635 updatecmd.Parameters.Add(new SqliteParameter(":start_time", uid.session_data.start_time));
636 updatecmd.Parameters.Add(new SqliteParameter(":client_version", uid.session_data.client_version));
637 updatecmd.Parameters.Add(new SqliteParameter(":s_cpu", uid.session_data.s_cpu));
638 updatecmd.Parameters.Add(new SqliteParameter(":s_gpu", uid.session_data.s_gpu));
639 updatecmd.Parameters.Add(new SqliteParameter(":s_os", uid.session_data.s_os));
640 updatecmd.Parameters.Add(new SqliteParameter(":s_ram", uid.session_data.s_ram));
641 updatecmd.Parameters.Add(new SqliteParameter(":d_object_kb", uid.session_data.d_object_kb));
642 updatecmd.Parameters.Add(new SqliteParameter(":d_texture_kb", uid.session_data.d_texture_kb));
643 updatecmd.Parameters.Add(new SqliteParameter(":d_world_kb", uid.session_data.d_world_kb));
644 updatecmd.Parameters.Add(new SqliteParameter(":n_in_kb", uid.session_data.n_in_kb));
645 updatecmd.Parameters.Add(new SqliteParameter(":n_in_pk", uid.session_data.n_in_pk));
646 updatecmd.Parameters.Add(new SqliteParameter(":n_out_kb", uid.session_data.n_out_kb));
647 updatecmd.Parameters.Add(new SqliteParameter(":n_out_pk", uid.session_data.n_out_pk));
648 updatecmd.Parameters.Add(new SqliteParameter(":f_dropped", uid.session_data.f_dropped));
649 updatecmd.Parameters.Add(new SqliteParameter(":f_failed_resends", uid.session_data.f_failed_resends));
650 updatecmd.Parameters.Add(new SqliteParameter(":f_invalid", uid.session_data.f_invalid));
651
652 updatecmd.Parameters.Add(new SqliteParameter(":f_off_circuit", uid.session_data.f_off_circuit));
653 updatecmd.Parameters.Add(new SqliteParameter(":f_resent", uid.session_data.f_resent));
654 updatecmd.Parameters.Add(new SqliteParameter(":f_send_packet", uid.session_data.f_send_packet));
655
656 updatecmd.Parameters.Add(new SqliteParameter(":session_key", uid.session_data.session_id.ToString()));
657 updatecmd.Parameters.Add(new SqliteParameter(":agent_key", uid.session_data.agent_id.ToString()));
658 updatecmd.Parameters.Add(new SqliteParameter(":region_key", uid.session_data.region_id.ToString()));
659
660// m_log.DebugFormat("[WEB STATS MODULE]: Database stats update for {0}", uid.session_data.agent_id);
661
662 int result = updatecmd.ExecuteNonQuery();
663
664 if (result == 0)
674 { 665 {
675 m_log.Warn("[WEB STATS MODULE]: failed to write stats to storage Execution Exception"); 666// m_log.DebugFormat("[WEB STATS MODULE]: Database stats insert for {0}", uid.session_data.agent_id);
676 } 667
677 catch (SqliteSyntaxException) 668 updatecmd.CommandText = SQL_STATS_TABLE_INSERT;
678 {
679 m_log.Warn("[WEB STATS MODULE]: failed to write stats to storage SQL Syntax Exception");
680 }
681 669
670 try
671 {
672 updatecmd.ExecuteNonQuery();
673 }
674 catch (Exception e)
675 {
676 m_log.WarnFormat(
677 "[WEB STATS MODULE]: failed to write stats for {0}, storage Execution Exception {1}{2}",
678 uid.session_data.agent_id, e.Message, e.StackTrace);
679 }
680 }
682 } 681 }
683 } 682 }
684 } 683 }