diff options
Diffstat (limited to 'OpenSim/Region/ClientStack')
35 files changed, 477 insertions, 477 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/AgentPreferencesModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/AgentPreferencesModule.cs index aabdb51..8f65a69 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/AgentPreferencesModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/AgentPreferencesModule.cs | |||
@@ -133,7 +133,7 @@ namespace OpenSim.Region.ClientStack.LindenCaps | |||
133 | { | 133 | { |
134 | data = new AgentPrefs(agent); | 134 | data = new AgentPrefs(agent); |
135 | } | 135 | } |
136 | 136 | ||
137 | if (req.ContainsKey("access_prefs")) | 137 | if (req.ContainsKey("access_prefs")) |
138 | { | 138 | { |
139 | OSDMap accessPrefs = (OSDMap)req["access_prefs"]; // We could check with ContainsKey... | 139 | OSDMap accessPrefs = (OSDMap)req["access_prefs"]; // We could check with ContainsKey... |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/AvatarPickerSearchModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/AvatarPickerSearchModule.cs index bbadc55..e3c430c 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/AvatarPickerSearchModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/AvatarPickerSearchModule.cs | |||
@@ -53,7 +53,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
53 | public class AvatarPickerSearchModule : INonSharedRegionModule | 53 | public class AvatarPickerSearchModule : INonSharedRegionModule |
54 | { | 54 | { |
55 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 55 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
56 | 56 | ||
57 | private Scene m_scene; | 57 | private Scene m_scene; |
58 | private IPeople m_People; | 58 | private IPeople m_People; |
59 | private bool m_Enabled = false; | 59 | private bool m_Enabled = false; |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs index 14a4873..8cb40e1 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs | |||
@@ -97,7 +97,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
97 | private ModelCost m_ModelCost; | 97 | private ModelCost m_ModelCost; |
98 | 98 | ||
99 | // private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule. | 99 | // private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule. |
100 | 100 | ||
101 | // These are callbacks which will be setup by the scene so that we can update scene data when we | 101 | // These are callbacks which will be setup by the scene so that we can update scene data when we |
102 | // receive capability calls | 102 | // receive capability calls |
103 | public NewInventoryItem AddNewInventoryItem = null; | 103 | public NewInventoryItem AddNewInventoryItem = null; |
@@ -119,7 +119,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
119 | 119 | ||
120 | private bool m_enableModelUploadTextureToInventory = false; // place uploaded textures also in inventory | 120 | private bool m_enableModelUploadTextureToInventory = false; // place uploaded textures also in inventory |
121 | // may not be visible till relog | 121 | // may not be visible till relog |
122 | 122 | ||
123 | private bool m_RestrictFreeTestUploadPerms = false; // reduces also the permitions. Needs a creator defined!! | 123 | private bool m_RestrictFreeTestUploadPerms = false; // reduces also the permitions. Needs a creator defined!! |
124 | private UUID m_testAssetsCreatorID = UUID.Zero; | 124 | private UUID m_testAssetsCreatorID = UUID.Zero; |
125 | 125 | ||
@@ -138,7 +138,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
138 | processUpload = 3 | 138 | processUpload = 3 |
139 | } | 139 | } |
140 | private FileAgentInventoryState m_FileAgentInventoryState = FileAgentInventoryState.idle; | 140 | private FileAgentInventoryState m_FileAgentInventoryState = FileAgentInventoryState.idle; |
141 | 141 | ||
142 | public BunchOfCaps(Scene scene, UUID agentID, Caps caps) | 142 | public BunchOfCaps(Scene scene, UUID agentID, Caps caps) |
143 | { | 143 | { |
144 | m_Scene = scene; | 144 | m_Scene = scene; |
@@ -147,7 +147,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
147 | 147 | ||
148 | // create a model upload cost provider | 148 | // create a model upload cost provider |
149 | m_ModelCost = new ModelCost(scene); | 149 | m_ModelCost = new ModelCost(scene); |
150 | 150 | ||
151 | m_PrimScaleMin = m_ModelCost.PrimScaleMin; | 151 | m_PrimScaleMin = m_ModelCost.PrimScaleMin; |
152 | 152 | ||
153 | IConfigSource config = m_Scene.Config; | 153 | IConfigSource config = m_Scene.Config; |
@@ -216,7 +216,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
216 | 216 | ||
217 | public string GetNewCapPath() | 217 | public string GetNewCapPath() |
218 | { | 218 | { |
219 | return "/CAPS/" + UUID.Random(); | 219 | return "/CAPS/" + UUID.Random(); |
220 | } | 220 | } |
221 | 221 | ||
222 | /// <summary> | 222 | /// <summary> |
@@ -271,7 +271,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
271 | "POST", GetNewCapPath(), HomeLocation, "HomeLocation", null); | 271 | "POST", GetNewCapPath(), HomeLocation, "HomeLocation", null); |
272 | m_HostCapsObj.RegisterHandler("HomeLocation", HomeLocationHandler); | 272 | m_HostCapsObj.RegisterHandler("HomeLocation", HomeLocationHandler); |
273 | } | 273 | } |
274 | 274 | ||
275 | if(m_AllowCapGroupMemberData) | 275 | if(m_AllowCapGroupMemberData) |
276 | { | 276 | { |
277 | IRequestHandler GroupMemberDataHandler = new RestStreamHandler( | 277 | IRequestHandler GroupMemberDataHandler = new RestStreamHandler( |
@@ -314,7 +314,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
314 | IRequestHandler CopyInventoryFromNotecardHandler = new RestStreamHandler( | 314 | IRequestHandler CopyInventoryFromNotecardHandler = new RestStreamHandler( |
315 | "POST", GetNewCapPath(), CopyInventoryFromNotecard, "CopyInventoryFromNotecard", null); | 315 | "POST", GetNewCapPath(), CopyInventoryFromNotecard, "CopyInventoryFromNotecard", null); |
316 | m_HostCapsObj.RegisterHandler("CopyInventoryFromNotecard", CopyInventoryFromNotecardHandler); | 316 | m_HostCapsObj.RegisterHandler("CopyInventoryFromNotecard", CopyInventoryFromNotecardHandler); |
317 | 317 | ||
318 | } | 318 | } |
319 | catch (Exception e) | 319 | catch (Exception e) |
320 | { | 320 | { |
@@ -568,8 +568,8 @@ namespace OpenSim.Region.ClientStack.Linden | |||
568 | { | 568 | { |
569 | string error; | 569 | string error; |
570 | int modelcost; | 570 | int modelcost; |
571 | 571 | ||
572 | 572 | ||
573 | if (!m_ModelCost.MeshModelCost(llsdRequest.asset_resources, baseCost, out modelcost, | 573 | if (!m_ModelCost.MeshModelCost(llsdRequest.asset_resources, baseCost, out modelcost, |
574 | meshcostdata, out error, ref warning)) | 574 | meshcostdata, out error, ref warning)) |
575 | { | 575 | { |
@@ -639,7 +639,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
639 | client.SendAgentAlertMessage(warning, true); | 639 | client.SendAgentAlertMessage(warning, true); |
640 | } | 640 | } |
641 | } | 641 | } |
642 | 642 | ||
643 | string assetDes = llsdRequest.description; | 643 | string assetDes = llsdRequest.description; |
644 | UUID newAsset = UUID.Random(); | 644 | UUID newAsset = UUID.Random(); |
645 | UUID newInvItem = UUID.Random(); | 645 | UUID newInvItem = UUID.Random(); |
@@ -813,7 +813,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
813 | 813 | ||
814 | List<UUID> textures = new List<UUID>(); | 814 | List<UUID> textures = new List<UUID>(); |
815 | 815 | ||
816 | 816 | ||
817 | // if (doTextInv) | 817 | // if (doTextInv) |
818 | m_Scene.TryGetClient(m_HostCapsObj.AgentID, out client); | 818 | m_Scene.TryGetClient(m_HostCapsObj.AgentID, out client); |
819 | 819 | ||
@@ -895,7 +895,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
895 | meshAvatarSkeletons.Add(curAvSkeleton); | 895 | meshAvatarSkeletons.Add(curAvSkeleton); |
896 | meshAvatarColliders.Add(curAvCollider); | 896 | meshAvatarColliders.Add(curAvCollider); |
897 | 897 | ||
898 | // test code | 898 | // test code |
899 | if (curAvSkeleton && client != null) | 899 | if (curAvSkeleton && client != null) |
900 | { | 900 | { |
901 | string name = assetName; | 901 | string name = assetName; |
@@ -1054,7 +1054,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1054 | prim.LastOwnerID = creatorID; | 1054 | prim.LastOwnerID = creatorID; |
1055 | prim.RezzerID = creatorID; | 1055 | prim.RezzerID = creatorID; |
1056 | prim.CreationDate = Util.UnixTimeSinceEpoch(); | 1056 | prim.CreationDate = Util.UnixTimeSinceEpoch(); |
1057 | 1057 | ||
1058 | if (grp == null) | 1058 | if (grp == null) |
1059 | prim.Name = assetName; | 1059 | prim.Name = assetName; |
1060 | else | 1060 | else |
@@ -1437,7 +1437,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1437 | public string GetObjectCost(string request, string path, | 1437 | public string GetObjectCost(string request, string path, |
1438 | string param, IOSHttpRequest httpRequest, | 1438 | string param, IOSHttpRequest httpRequest, |
1439 | IOSHttpResponse httpResponse) | 1439 | IOSHttpResponse httpResponse) |
1440 | { | 1440 | { |
1441 | OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request); | 1441 | OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request); |
1442 | OSDMap resp = new OSDMap(); | 1442 | OSDMap resp = new OSDMap(); |
1443 | 1443 | ||
@@ -1446,7 +1446,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1446 | for (int i = 0; i < object_ids.Count; i++) | 1446 | for (int i = 0; i < object_ids.Count; i++) |
1447 | { | 1447 | { |
1448 | UUID uuid = object_ids[i].AsUUID(); | 1448 | UUID uuid = object_ids[i].AsUUID(); |
1449 | 1449 | ||
1450 | SceneObjectPart part = m_Scene.GetSceneObjectPart(uuid); | 1450 | SceneObjectPart part = m_Scene.GetSceneObjectPart(uuid); |
1451 | SceneObjectGroup grp = null; | 1451 | SceneObjectGroup grp = null; |
1452 | if (part != null) | 1452 | if (part != null) |
@@ -1479,7 +1479,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1479 | resp[UUID.Zero.ToString()] = object_data; | 1479 | resp[UUID.Zero.ToString()] = object_data; |
1480 | } | 1480 | } |
1481 | string response = OSDParser.SerializeLLSDXmlString(resp); | 1481 | string response = OSDParser.SerializeLLSDXmlString(resp); |
1482 | return response; | 1482 | return response; |
1483 | } | 1483 | } |
1484 | 1484 | ||
1485 | public string ResourceCostSelected(string request, string path, | 1485 | public string ResourceCostSelected(string request, string path, |
@@ -1548,7 +1548,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1548 | resp["selected"] = object_data; | 1548 | resp["selected"] = object_data; |
1549 | // resp["transaction_id"] = "undef"; | 1549 | // resp["transaction_id"] = "undef"; |
1550 | string response = OSDParser.SerializeLLSDXmlString(resp); | 1550 | string response = OSDParser.SerializeLLSDXmlString(resp); |
1551 | return response; | 1551 | return response; |
1552 | } | 1552 | } |
1553 | 1553 | ||
1554 | public string UpdateAgentInformation(string request, string path, | 1554 | public string UpdateAgentInformation(string request, string path, |
@@ -1564,7 +1564,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1564 | resp["access_prefs"] = accessPrefs; | 1564 | resp["access_prefs"] = accessPrefs; |
1565 | 1565 | ||
1566 | string response = OSDParser.SerializeLLSDXmlString(resp); | 1566 | string response = OSDParser.SerializeLLSDXmlString(resp); |
1567 | return response; | 1567 | return response; |
1568 | } | 1568 | } |
1569 | 1569 | ||
1570 | public bool OSDMapTOVector3(OSDMap map, out Vector3 v) | 1570 | public bool OSDMapTOVector3(OSDMap map, out Vector3 v) |
@@ -1598,19 +1598,19 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1598 | 1598 | ||
1599 | IClientAPI client = null; | 1599 | IClientAPI client = null; |
1600 | ScenePresence sp; | 1600 | ScenePresence sp; |
1601 | 1601 | ||
1602 | while(true) | 1602 | while(true) |
1603 | { | 1603 | { |
1604 | if(m_Scene.GridUserService == null) | 1604 | if(m_Scene.GridUserService == null) |
1605 | break; | 1605 | break; |
1606 | 1606 | ||
1607 | if(m_Scene.UserManagementModule == null) | 1607 | if(m_Scene.UserManagementModule == null) |
1608 | break; | 1608 | break; |
1609 | 1609 | ||
1610 | m_Scene.TryGetScenePresence(m_AgentID, out sp); | 1610 | m_Scene.TryGetScenePresence(m_AgentID, out sp); |
1611 | if(sp == null || sp.IsChildAgent || sp.IsDeleted || sp.IsInTransit) | 1611 | if(sp == null || sp.IsChildAgent || sp.IsDeleted || sp.IsInTransit) |
1612 | break; | 1612 | break; |
1613 | 1613 | ||
1614 | client = sp.ControllingClient; | 1614 | client = sp.ControllingClient; |
1615 | 1615 | ||
1616 | if(!m_Scene.UserManagementModule.IsLocalGridUser(m_AgentID)) | 1616 | if(!m_Scene.UserManagementModule.IsLocalGridUser(m_AgentID)) |
@@ -1637,7 +1637,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1637 | ILandObject land = m_Scene.LandChannel.GetLandObject(pos); | 1637 | ILandObject land = m_Scene.LandChannel.GetLandObject(pos); |
1638 | if(land == null) | 1638 | if(land == null) |
1639 | break; | 1639 | break; |
1640 | 1640 | ||
1641 | ulong gpowers = client.GetGroupPowers(land.LandData.GroupID); | 1641 | ulong gpowers = client.GetGroupPowers(land.LandData.GroupID); |
1642 | SceneObjectGroup telehub = null; | 1642 | SceneObjectGroup telehub = null; |
1643 | if (m_Scene.RegionInfo.RegionSettings.TelehubObject != UUID.Zero) | 1643 | if (m_Scene.RegionInfo.RegionSettings.TelehubObject != UUID.Zero) |
@@ -1648,7 +1648,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1648 | !m_Scene.Permissions.IsGod(m_AgentID) && | 1648 | !m_Scene.Permissions.IsGod(m_AgentID) && |
1649 | m_AgentID != land.LandData.OwnerID && // (b) land owners can set home | 1649 | m_AgentID != land.LandData.OwnerID && // (b) land owners can set home |
1650 | // (c) members of the land-associated group in roles that can set home | 1650 | // (c) members of the land-associated group in roles that can set home |
1651 | ((gpowers & (ulong)GroupPowers.AllowSetHome) != (ulong)GroupPowers.AllowSetHome) && | 1651 | ((gpowers & (ulong)GroupPowers.AllowSetHome) != (ulong)GroupPowers.AllowSetHome) && |
1652 | // (d) parcels with telehubs can be the home of anyone | 1652 | // (d) parcels with telehubs can be the home of anyone |
1653 | (telehub == null || !land.ContainsPoint((int)telehub.AbsolutePosition.X, (int)telehub.AbsolutePosition.Y))) | 1653 | (telehub == null || !land.ContainsPoint((int)telehub.AbsolutePosition.X, (int)telehub.AbsolutePosition.Y))) |
1654 | { | 1654 | { |
@@ -1675,7 +1675,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1675 | 1675 | ||
1676 | break; | 1676 | break; |
1677 | } | 1677 | } |
1678 | 1678 | ||
1679 | string response; | 1679 | string response; |
1680 | 1680 | ||
1681 | if(fail) | 1681 | if(fail) |
@@ -1728,11 +1728,11 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1728 | m_GroupsModule = m_Scene.RequestModuleInterface<IGroupsModule>(); | 1728 | m_GroupsModule = m_Scene.RequestModuleInterface<IGroupsModule>(); |
1729 | if(m_GroupsModule == null) | 1729 | if(m_GroupsModule == null) |
1730 | break; | 1730 | break; |
1731 | 1731 | ||
1732 | m_Scene.TryGetScenePresence(m_AgentID, out sp); | 1732 | m_Scene.TryGetScenePresence(m_AgentID, out sp); |
1733 | if(sp == null || sp.IsChildAgent || sp.IsDeleted || sp.IsInTransit) | 1733 | if(sp == null || sp.IsChildAgent || sp.IsDeleted || sp.IsInTransit) |
1734 | break; | 1734 | break; |
1735 | 1735 | ||
1736 | client = sp.ControllingClient; | 1736 | client = sp.ControllingClient; |
1737 | 1737 | ||
1738 | OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request); | 1738 | OSDMap req = (OSDMap)OSDParser.DeserializeLLSDXml(request); |
@@ -1866,12 +1866,12 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1866 | OSDMap osdname = new OSDMap(); | 1866 | OSDMap osdname = new OSDMap(); |
1867 | if(parts[0] == "Unknown") | 1867 | if(parts[0] == "Unknown") |
1868 | { | 1868 | { |
1869 | osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddHours(1)); | 1869 | osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddHours(1)); |
1870 | osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddHours(2)); | 1870 | osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddHours(2)); |
1871 | } | 1871 | } |
1872 | else | 1872 | else |
1873 | { | 1873 | { |
1874 | osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddDays(8)); | 1874 | osdname["display_name_next_update"] = OSD.FromDate(DateTime.UtcNow.AddDays(8)); |
1875 | osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddMonths(1)); | 1875 | osdname["display_name_expires"] = OSD.FromDate(DateTime.UtcNow.AddMonths(1)); |
1876 | } | 1876 | } |
1877 | osdname["display_name"] = OSD.FromString(kvp.Value); | 1877 | osdname["display_name"] = OSD.FromString(kvp.Value); |
@@ -1916,7 +1916,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1916 | private string m_assetType = String.Empty; | 1916 | private string m_assetType = String.Empty; |
1917 | private int m_cost; | 1917 | private int m_cost; |
1918 | private string m_error = String.Empty; | 1918 | private string m_error = String.Empty; |
1919 | 1919 | ||
1920 | private Timer m_timeoutTimer = new Timer(); | 1920 | private Timer m_timeoutTimer = new Timer(); |
1921 | private UUID m_texturesFolder; | 1921 | private UUID m_texturesFolder; |
1922 | private int m_nreqtextures; | 1922 | private int m_nreqtextures; |
@@ -1928,7 +1928,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
1928 | private int m_groupMask; | 1928 | private int m_groupMask; |
1929 | private int m_everyoneMask; | 1929 | private int m_everyoneMask; |
1930 | 1930 | ||
1931 | 1931 | ||
1932 | public AssetUploader(string assetName, string description, UUID assetID, UUID inventoryItem, | 1932 | public AssetUploader(string assetName, string description, UUID assetID, UUID inventoryItem, |
1933 | UUID parentFolderID, string invType, string assetType, string path, | 1933 | UUID parentFolderID, string invType, string assetType, string path, |
1934 | IHttpServer httpServer, bool dumpAssetsToFile, | 1934 | IHttpServer httpServer, bool dumpAssetsToFile, |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCapsModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCapsModule.cs index 5b4e0da..683c3d5 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCapsModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCapsModule.cs | |||
@@ -63,7 +63,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
63 | { | 63 | { |
64 | } | 64 | } |
65 | 65 | ||
66 | public void Close() { } | 66 | public void Close() { } |
67 | 67 | ||
68 | public void AddRegion(Scene scene) | 68 | public void AddRegion(Scene scene) |
69 | { | 69 | { |
@@ -80,7 +80,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
80 | } | 80 | } |
81 | 81 | ||
82 | public void PostInitialise() { } | 82 | public void PostInitialise() { } |
83 | #endregion | 83 | #endregion |
84 | 84 | ||
85 | private void OnRegisterCaps(UUID agentID, Caps caps) | 85 | private void OnRegisterCaps(UUID agentID, Caps caps) |
86 | { | 86 | { |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs index fb22694..eb1ab45 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/MeshCost.cs | |||
@@ -51,7 +51,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
51 | { | 51 | { |
52 | public struct ModelPrimLimits | 52 | public struct ModelPrimLimits |
53 | { | 53 | { |
54 | 54 | ||
55 | } | 55 | } |
56 | 56 | ||
57 | public class ModelCost | 57 | public class ModelCost |
@@ -82,9 +82,9 @@ namespace OpenSim.Region.ClientStack.Linden | |||
82 | const float lowestSizeWth = 2f; // 3x | 82 | const float lowestSizeWth = 2f; // 3x |
83 | // favor potencially physical optimized meshs versus automatic decomposition | 83 | // favor potencially physical optimized meshs versus automatic decomposition |
84 | const float physMeshSizeWth = 6f; // counts 7x | 84 | const float physMeshSizeWth = 6f; // counts 7x |
85 | const float physHullSizeWth = 8f; // counts 9x | 85 | const float physHullSizeWth = 8f; // counts 9x |
86 | 86 | ||
87 | // stream cost area factors | 87 | // stream cost area factors |
88 | // more or less like SL | 88 | // more or less like SL |
89 | const float highLodFactor = 17.36f; | 89 | const float highLodFactor = 17.36f; |
90 | const float midLodFactor = 277.78f; | 90 | const float midLodFactor = 277.78f; |
@@ -108,7 +108,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
108 | PrimScaleMin = scene.m_minNonphys; | 108 | PrimScaleMin = scene.m_minNonphys; |
109 | NonPhysicalPrimScaleMax = scene.m_maxNonphys; | 109 | NonPhysicalPrimScaleMax = scene.m_maxNonphys; |
110 | PhysicalPrimScaleMax = scene.m_maxPhys; | 110 | PhysicalPrimScaleMax = scene.m_maxPhys; |
111 | ObjectLinkedPartsMax = scene.m_linksetCapacity; | 111 | ObjectLinkedPartsMax = scene.m_linksetCapacity; |
112 | } | 112 | } |
113 | 113 | ||
114 | public void Econfig(IConfig EconomyConfig) | 114 | public void Econfig(IConfig EconomyConfig) |
@@ -121,7 +121,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
121 | bytecost = EconomyConfig.GetFloat("ModelMeshByteCost", bytecost); | 121 | bytecost = EconomyConfig.GetFloat("ModelMeshByteCost", bytecost); |
122 | } | 122 | } |
123 | 123 | ||
124 | // storage for a single mesh asset cost parameters | 124 | // storage for a single mesh asset cost parameters |
125 | private class ameshCostParam | 125 | private class ameshCostParam |
126 | { | 126 | { |
127 | // LOD sizes for size dependent streaming cost | 127 | // LOD sizes for size dependent streaming cost |
@@ -140,7 +140,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
140 | // resources input LLSD request | 140 | // resources input LLSD request |
141 | // basicCost input region assets upload cost | 141 | // basicCost input region assets upload cost |
142 | // totalcost returns model total upload fee | 142 | // totalcost returns model total upload fee |
143 | // meshcostdata returns detailed costs for viewer | 143 | // meshcostdata returns detailed costs for viewer |
144 | // avatarSkeleton if mesh includes a avatar skeleton | 144 | // avatarSkeleton if mesh includes a avatar skeleton |
145 | // useAvatarCollider if we should use physics mesh for avatar | 145 | // useAvatarCollider if we should use physics mesh for avatar |
146 | public bool MeshModelCost(LLSDAssetResource resources, int basicCost, out int totalcost, | 146 | public bool MeshModelCost(LLSDAssetResource resources, int basicCost, out int totalcost, |
@@ -150,7 +150,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
150 | error = string.Empty; | 150 | error = string.Empty; |
151 | 151 | ||
152 | bool avatarSkeleton = false; | 152 | bool avatarSkeleton = false; |
153 | 153 | ||
154 | if (resources == null || | 154 | if (resources == null || |
155 | resources.instance_list == null || | 155 | resources.instance_list == null || |
156 | resources.instance_list.Array.Count == 0) | 156 | resources.instance_list.Array.Count == 0) |
@@ -203,7 +203,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
203 | if (resources.mesh_list != null && resources.mesh_list.Array.Count > 0) | 203 | if (resources.mesh_list != null && resources.mesh_list.Array.Count > 0) |
204 | { | 204 | { |
205 | numberMeshs = resources.mesh_list.Array.Count; | 205 | numberMeshs = resources.mesh_list.Array.Count; |
206 | 206 | ||
207 | for (int i = 0; i < numberMeshs; i++) | 207 | for (int i = 0; i < numberMeshs; i++) |
208 | { | 208 | { |
209 | ameshCostParam curCost = new ameshCostParam(); | 209 | ameshCostParam curCost = new ameshCostParam(); |
@@ -230,7 +230,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
230 | } | 230 | } |
231 | 231 | ||
232 | // instances (prims) cost | 232 | // instances (prims) cost |
233 | 233 | ||
234 | 234 | ||
235 | int mesh; | 235 | int mesh; |
236 | int skipedSmall = 0; | 236 | int skipedSmall = 0; |
@@ -331,7 +331,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
331 | 331 | ||
332 | // breakdown prices | 332 | // breakdown prices |
333 | // don't seem to be in use so removed code for now | 333 | // don't seem to be in use so removed code for now |
334 | 334 | ||
335 | return true; | 335 | return true; |
336 | } | 336 | } |
337 | 337 | ||
@@ -404,7 +404,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
404 | int sksize = tmpmap["size"].AsInteger(); | 404 | int sksize = tmpmap["size"].AsInteger(); |
405 | if(sksize > 0) | 405 | if(sksize > 0) |
406 | skeleton = true; | 406 | skeleton = true; |
407 | } | 407 | } |
408 | } | 408 | } |
409 | 409 | ||
410 | if (map.ContainsKey("physics_convex")) | 410 | if (map.ContainsKey("physics_convex")) |
@@ -429,7 +429,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
429 | } | 429 | } |
430 | 430 | ||
431 | submesh_offset = -1; | 431 | submesh_offset = -1; |
432 | 432 | ||
433 | // only look for LOD meshs sizes | 433 | // only look for LOD meshs sizes |
434 | 434 | ||
435 | if (map.ContainsKey("high_lod")) | 435 | if (map.ContainsKey("high_lod")) |
@@ -518,7 +518,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
518 | cost.physicsCost = 0.04f * phys_hullsvertices; | 518 | cost.physicsCost = 0.04f * phys_hullsvertices; |
519 | 519 | ||
520 | float sfee; | 520 | float sfee; |
521 | 521 | ||
522 | sfee = data.Length; // start with total compressed data size | 522 | sfee = data.Length; // start with total compressed data size |
523 | 523 | ||
524 | // penalize lod meshs that should be more builder optimized | 524 | // penalize lod meshs that should be more builder optimized |
@@ -535,7 +535,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
535 | 535 | ||
536 | // bytes to money | 536 | // bytes to money |
537 | sfee *= bytecost; | 537 | sfee *= bytecost; |
538 | 538 | ||
539 | cost.costFee = sfee; | 539 | cost.costFee = sfee; |
540 | return true; | 540 | return true; |
541 | } | 541 | } |
@@ -675,7 +675,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
675 | return true; | 675 | return true; |
676 | } | 676 | } |
677 | 677 | ||
678 | // returns streaming cost from on mesh LODs sizes in curCost and square of prim size length | 678 | // returns streaming cost from on mesh LODs sizes in curCost and square of prim size length |
679 | private float streamingCost(ameshCostParam curCost, float sqdiam) | 679 | private float streamingCost(ameshCostParam curCost, float sqdiam) |
680 | { | 680 | { |
681 | // compute efective areas | 681 | // compute efective areas |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs index ba3edd6..1feece1 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueGetModule.cs | |||
@@ -74,12 +74,12 @@ namespace OpenSim.Region.ClientStack.Linden | |||
74 | private const int SERVER_EQ_TIME_NO_EVENTS = VIEWER_TIMEOUT - (10 * 1000); | 74 | private const int SERVER_EQ_TIME_NO_EVENTS = VIEWER_TIMEOUT - (10 * 1000); |
75 | 75 | ||
76 | protected Scene m_scene; | 76 | protected Scene m_scene; |
77 | 77 | ||
78 | private Dictionary<UUID, int> m_ids = new Dictionary<UUID, int>(); | 78 | private Dictionary<UUID, int> m_ids = new Dictionary<UUID, int>(); |
79 | 79 | ||
80 | private Dictionary<UUID, Queue<OSD>> queues = new Dictionary<UUID, Queue<OSD>>(); | 80 | private Dictionary<UUID, Queue<OSD>> queues = new Dictionary<UUID, Queue<OSD>>(); |
81 | private Dictionary<UUID, UUID> m_AvatarQueueUUIDMapping = new Dictionary<UUID, UUID>(); | 81 | private Dictionary<UUID, UUID> m_AvatarQueueUUIDMapping = new Dictionary<UUID, UUID>(); |
82 | 82 | ||
83 | #region INonSharedRegionModule methods | 83 | #region INonSharedRegionModule methods |
84 | public virtual void Initialise(IConfigSource config) | 84 | public virtual void Initialise(IConfigSource config) |
85 | { | 85 | { |
@@ -170,7 +170,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
170 | foreach (KeyValuePair<UUID, Queue<OSD>> kvp in queues) | 170 | foreach (KeyValuePair<UUID, Queue<OSD>> kvp in queues) |
171 | { | 171 | { |
172 | MainConsole.Instance.OutputFormat( | 172 | MainConsole.Instance.OutputFormat( |
173 | "For agent {0} there are {1} messages queued for send.", | 173 | "For agent {0} there are {1} messages queued for send.", |
174 | kvp.Key, kvp.Value.Count); | 174 | kvp.Key, kvp.Value.Count); |
175 | } | 175 | } |
176 | } | 176 | } |
@@ -189,7 +189,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
189 | { | 189 | { |
190 | if (DebugLevel > 0) | 190 | if (DebugLevel > 0) |
191 | m_log.DebugFormat( | 191 | m_log.DebugFormat( |
192 | "[EVENTQUEUE]: Adding new queue for agent {0} in region {1}", | 192 | "[EVENTQUEUE]: Adding new queue for agent {0} in region {1}", |
193 | agentId, m_scene.RegionInfo.RegionName); | 193 | agentId, m_scene.RegionInfo.RegionName); |
194 | 194 | ||
195 | queues[agentId] = new Queue<OSD>(); | 195 | queues[agentId] = new Queue<OSD>(); |
@@ -238,13 +238,13 @@ namespace OpenSim.Region.ClientStack.Linden | |||
238 | "[EVENTQUEUE]: (Enqueue) No queue found for agent {0} when placing message {1} in region {2}", | 238 | "[EVENTQUEUE]: (Enqueue) No queue found for agent {0} when placing message {1} in region {2}", |
239 | avatarID, evMap["message"], m_scene.Name); | 239 | avatarID, evMap["message"], m_scene.Name); |
240 | } | 240 | } |
241 | } | 241 | } |
242 | catch (NullReferenceException e) | 242 | catch (NullReferenceException e) |
243 | { | 243 | { |
244 | m_log.Error("[EVENTQUEUE] Caught exception: " + e); | 244 | m_log.Error("[EVENTQUEUE] Caught exception: " + e); |
245 | return false; | 245 | return false; |
246 | } | 246 | } |
247 | 247 | ||
248 | return true; | 248 | return true; |
249 | } | 249 | } |
250 | 250 | ||
@@ -309,10 +309,10 @@ namespace OpenSim.Region.ClientStack.Linden | |||
309 | 309 | ||
310 | // push markers to handle old responses still waiting | 310 | // push markers to handle old responses still waiting |
311 | // this will cost at most viewer getting two forced noevents | 311 | // this will cost at most viewer getting two forced noevents |
312 | // even being a new queue better be safe | 312 | // even being a new queue better be safe |
313 | queue.Enqueue(null); | 313 | queue.Enqueue(null); |
314 | queue.Enqueue(null); // one should be enough | 314 | queue.Enqueue(null); // one should be enough |
315 | 315 | ||
316 | lock (m_AvatarQueueUUIDMapping) | 316 | lock (m_AvatarQueueUUIDMapping) |
317 | { | 317 | { |
318 | eventQueueGetUUID = UUID.Random(); | 318 | eventQueueGetUUID = UUID.Random(); |
@@ -336,7 +336,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
336 | { | 336 | { |
337 | // push markers to handle old responses still waiting | 337 | // push markers to handle old responses still waiting |
338 | // this will cost at most viewer getting two forced noevents | 338 | // this will cost at most viewer getting two forced noevents |
339 | // even being a new queue better be safe | 339 | // even being a new queue better be safe |
340 | queue.Enqueue(null); | 340 | queue.Enqueue(null); |
341 | queue.Enqueue(null); // one should be enough | 341 | queue.Enqueue(null); // one should be enough |
342 | 342 | ||
@@ -405,7 +405,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
405 | } | 405 | } |
406 | public void Drop(UUID requestID, UUID pAgentId) | 406 | public void Drop(UUID requestID, UUID pAgentId) |
407 | { | 407 | { |
408 | // do nothing for now, hope client close will do it | 408 | // do nothing for now, hope client close will do it |
409 | } | 409 | } |
410 | 410 | ||
411 | public Hashtable GetEvents(UUID requestID, UUID pAgentId) | 411 | public Hashtable GetEvents(UUID requestID, UUID pAgentId) |
@@ -437,7 +437,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
437 | negativeID = true; | 437 | negativeID = true; |
438 | thisID = -thisID; | 438 | thisID = -thisID; |
439 | } | 439 | } |
440 | 440 | ||
441 | while (queue.Count > 0) | 441 | while (queue.Count > 0) |
442 | { | 442 | { |
443 | element = queue.Dequeue(); | 443 | element = queue.Dequeue(); |
@@ -477,7 +477,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
477 | // if there where no elements before a marker send a NoEvents | 477 | // if there where no elements before a marker send a NoEvents |
478 | if (array.Count == 0) | 478 | if (array.Count == 0) |
479 | return NoEvents(requestID, pAgentId); | 479 | return NoEvents(requestID, pAgentId); |
480 | 480 | ||
481 | Hashtable responsedata = new Hashtable(); | 481 | Hashtable responsedata = new Hashtable(); |
482 | responsedata["int_response_code"] = 200; | 482 | responsedata["int_response_code"] = 200; |
483 | responsedata["content_type"] = "application/xml"; | 483 | responsedata["content_type"] = "application/xml"; |
@@ -500,7 +500,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
500 | responsedata["http_protocol_version"] = "HTTP/1.0"; | 500 | responsedata["http_protocol_version"] = "HTTP/1.0"; |
501 | return responsedata; | 501 | return responsedata; |
502 | } | 502 | } |
503 | 503 | ||
504 | public void DisableSimulator(ulong handle, UUID avatarID) | 504 | public void DisableSimulator(ulong handle, UUID avatarID) |
505 | { | 505 | { |
506 | OSD item = EventQueueHelper.DisableSimulator(handle); | 506 | OSD item = EventQueueHelper.DisableSimulator(handle); |
@@ -518,7 +518,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
518 | } | 518 | } |
519 | 519 | ||
520 | public virtual void EstablishAgentCommunication(UUID avatarID, IPEndPoint endPoint, string capsPath, | 520 | public virtual void EstablishAgentCommunication(UUID avatarID, IPEndPoint endPoint, string capsPath, |
521 | ulong regionHandle, int regionSizeX, int regionSizeY) | 521 | ulong regionHandle, int regionSizeX, int regionSizeY) |
522 | { | 522 | { |
523 | if (DebugLevel > 0) | 523 | if (DebugLevel > 0) |
524 | m_log.DebugFormat("{0} EstablishAgentCommunication. handle={1}, endPoint={2}, avatarID={3}", | 524 | m_log.DebugFormat("{0} EstablishAgentCommunication. handle={1}, endPoint={2}, avatarID={3}", |
@@ -528,9 +528,9 @@ namespace OpenSim.Region.ClientStack.Linden | |||
528 | Enqueue(item, avatarID); | 528 | Enqueue(item, avatarID); |
529 | } | 529 | } |
530 | 530 | ||
531 | public virtual void TeleportFinishEvent(ulong regionHandle, byte simAccess, | 531 | public virtual void TeleportFinishEvent(ulong regionHandle, byte simAccess, |
532 | IPEndPoint regionExternalEndPoint, | 532 | IPEndPoint regionExternalEndPoint, |
533 | uint locationID, uint flags, string capsURL, | 533 | uint locationID, uint flags, string capsURL, |
534 | UUID avatarID, int regionSizeX, int regionSizeY) | 534 | UUID avatarID, int regionSizeX, int regionSizeY) |
535 | { | 535 | { |
536 | if (DebugLevel > 0) | 536 | if (DebugLevel > 0) |
@@ -560,15 +560,15 @@ namespace OpenSim.Region.ClientStack.Linden | |||
560 | uint timeStamp, bool offline, int parentEstateID, Vector3 position, | 560 | uint timeStamp, bool offline, int parentEstateID, Vector3 position, |
561 | uint ttl, UUID transactionID, bool fromGroup, byte[] binaryBucket) | 561 | uint ttl, UUID transactionID, bool fromGroup, byte[] binaryBucket) |
562 | { | 562 | { |
563 | OSD item = EventQueueHelper.ChatterboxInvitation(sessionID, sessionName, fromAgent, message, toAgent, fromName, dialog, | 563 | OSD item = EventQueueHelper.ChatterboxInvitation(sessionID, sessionName, fromAgent, message, toAgent, fromName, dialog, |
564 | timeStamp, offline, parentEstateID, position, ttl, transactionID, | 564 | timeStamp, offline, parentEstateID, position, ttl, transactionID, |
565 | fromGroup, binaryBucket); | 565 | fromGroup, binaryBucket); |
566 | Enqueue(item, toAgent); | 566 | Enqueue(item, toAgent); |
567 | //m_log.InfoFormat("########### eq ChatterboxInvitation #############\n{0}", item); | 567 | //m_log.InfoFormat("########### eq ChatterboxInvitation #############\n{0}", item); |
568 | 568 | ||
569 | } | 569 | } |
570 | 570 | ||
571 | public void ChatterBoxSessionAgentListUpdates(UUID sessionID, UUID fromAgent, UUID toAgent, bool canVoiceChat, | 571 | public void ChatterBoxSessionAgentListUpdates(UUID sessionID, UUID fromAgent, UUID toAgent, bool canVoiceChat, |
572 | bool isModerator, bool textMute, bool isEnterorLeave) | 572 | bool isModerator, bool textMute, bool isEnterorLeave) |
573 | { | 573 | { |
574 | OSD item = EventQueueHelper.ChatterBoxSessionAgentListUpdates(sessionID, fromAgent, canVoiceChat, | 574 | OSD item = EventQueueHelper.ChatterBoxSessionAgentListUpdates(sessionID, fromAgent, canVoiceChat, |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs index 5e0bd71..e1e88ae 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/EventQueueHelper.cs | |||
@@ -105,7 +105,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
105 | 105 | ||
106 | return BuildEvent("DisableSimulator", llsdBody); | 106 | return BuildEvent("DisableSimulator", llsdBody); |
107 | } | 107 | } |
108 | 108 | ||
109 | public static OSD CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt, | 109 | public static OSD CrossRegion(ulong handle, Vector3 pos, Vector3 lookAt, |
110 | IPEndPoint newRegionExternalEndPoint, | 110 | IPEndPoint newRegionExternalEndPoint, |
111 | string capsURL, UUID agentID, UUID sessionID, | 111 | string capsURL, UUID agentID, UUID sessionID, |
@@ -194,13 +194,13 @@ namespace OpenSim.Region.ClientStack.Linden | |||
194 | script.Add("ItemID", OSD.FromUUID(itemID)); | 194 | script.Add("ItemID", OSD.FromUUID(itemID)); |
195 | script.Add("Running", OSD.FromBoolean(running)); | 195 | script.Add("Running", OSD.FromBoolean(running)); |
196 | script.Add("Mono", OSD.FromBoolean(mono)); | 196 | script.Add("Mono", OSD.FromBoolean(mono)); |
197 | 197 | ||
198 | OSDArray scriptArr = new OSDArray(); | 198 | OSDArray scriptArr = new OSDArray(); |
199 | scriptArr.Add(script); | 199 | scriptArr.Add(script); |
200 | 200 | ||
201 | OSDMap body = new OSDMap(); | 201 | OSDMap body = new OSDMap(); |
202 | body.Add("Script", scriptArr); | 202 | body.Add("Script", scriptArr); |
203 | 203 | ||
204 | return BuildEvent("ScriptRunningReply", body); | 204 | return BuildEvent("ScriptRunningReply", body); |
205 | } | 205 | } |
206 | 206 | ||
@@ -243,7 +243,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
243 | { | 243 | { |
244 | OSDMap messageParams = new OSDMap(15); | 244 | OSDMap messageParams = new OSDMap(15); |
245 | messageParams.Add("type", new OSDInteger((int)dialog)); | 245 | messageParams.Add("type", new OSDInteger((int)dialog)); |
246 | 246 | ||
247 | OSDArray positionArray = new OSDArray(3); | 247 | OSDArray positionArray = new OSDArray(3); |
248 | positionArray.Add(OSD.FromReal(position.X)); | 248 | positionArray.Add(OSD.FromReal(position.X)); |
249 | positionArray.Add(OSD.FromReal(position.Y)); | 249 | positionArray.Add(OSD.FromReal(position.Y)); |
@@ -423,7 +423,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
423 | QueryDataMap.Add("SnapShotID", OSD.FromUUID(groupDataBlock.SnapshotID)); | 423 | QueryDataMap.Add("SnapShotID", OSD.FromUUID(groupDataBlock.SnapshotID)); |
424 | QueryDataMap.Add("ProductSku", OSD.FromInteger(0)); | 424 | QueryDataMap.Add("ProductSku", OSD.FromInteger(0)); |
425 | QueryDataMap.Add("Price", OSD.FromInteger(groupDataBlock.Price)); | 425 | QueryDataMap.Add("Price", OSD.FromInteger(groupDataBlock.Price)); |
426 | 426 | ||
427 | QueryData.Add(QueryDataMap); | 427 | QueryData.Add(QueryDataMap); |
428 | } | 428 | } |
429 | body.Add("QueryData", QueryData); | 429 | body.Add("QueryData", QueryData); |
@@ -444,7 +444,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
444 | public static OSD partPhysicsProperties(uint localID, byte physhapetype, | 444 | public static OSD partPhysicsProperties(uint localID, byte physhapetype, |
445 | float density, float friction, float bounce, float gravmod) | 445 | float density, float friction, float bounce, float gravmod) |
446 | { | 446 | { |
447 | 447 | ||
448 | OSDMap physinfo = new OSDMap(6); | 448 | OSDMap physinfo = new OSDMap(6); |
449 | physinfo["LocalID"] = localID; | 449 | physinfo["LocalID"] = localID; |
450 | physinfo["Density"] = density; | 450 | physinfo["Density"] = density; |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs index 1e629bd..ee3f4f1 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs | |||
@@ -180,7 +180,7 @@ namespace OpenSim.Region.ClientStack.Linden.Tests | |||
180 | TestHelpers.InMethod(); | 180 | TestHelpers.InMethod(); |
181 | // TestHelpers.EnableLogging(); | 181 | // TestHelpers.EnableLogging(); |
182 | 182 | ||
183 | UUID npcId | 183 | UUID npcId |
184 | = m_npcMod.CreateNPC( | 184 | = m_npcMod.CreateNPC( |
185 | "John", "Smith", new Vector3(128, 128, 30), UUID.Zero, true, m_scene, new AvatarAppearance()); | 185 | "John", "Smith", new Vector3(128, 128, 30), UUID.Zero, true, m_scene, new AvatarAppearance()); |
186 | 186 | ||
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/GetMeshModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/GetMeshModule.cs index f66ef57..ae18bc1 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/GetMeshModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/GetMeshModule.cs | |||
@@ -55,7 +55,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
55 | { | 55 | { |
56 | // private static readonly ILog m_log = | 56 | // private static readonly ILog m_log = |
57 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 57 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
58 | 58 | ||
59 | private Scene m_scene; | 59 | private Scene m_scene; |
60 | private IAssetService m_AssetService; | 60 | private IAssetService m_AssetService; |
61 | private bool m_Enabled = true; | 61 | private bool m_Enabled = true; |
@@ -64,7 +64,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
64 | private string m_URL2; | 64 | private string m_URL2; |
65 | private string m_RedirectURL = null; | 65 | private string m_RedirectURL = null; |
66 | private string m_RedirectURL2 = null; | 66 | private string m_RedirectURL2 = null; |
67 | 67 | ||
68 | struct aPollRequest | 68 | struct aPollRequest |
69 | { | 69 | { |
70 | public PollServiceMeshEventArgs thepoll; | 70 | public PollServiceMeshEventArgs thepoll; |
@@ -132,7 +132,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
132 | return; | 132 | return; |
133 | 133 | ||
134 | m_scene = pScene; | 134 | m_scene = pScene; |
135 | 135 | ||
136 | m_assetService = pScene.AssetService; | 136 | m_assetService = pScene.AssetService; |
137 | } | 137 | } |
138 | 138 | ||
@@ -342,7 +342,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
342 | { | 342 | { |
343 | string capUrl = "/CAPS/" + UUID.Random() + "/"; | 343 | string capUrl = "/CAPS/" + UUID.Random() + "/"; |
344 | 344 | ||
345 | // Register this as a poll service | 345 | // Register this as a poll service |
346 | PollServiceMeshEventArgs args = new PollServiceMeshEventArgs(capUrl, agentID, m_scene); | 346 | PollServiceMeshEventArgs args = new PollServiceMeshEventArgs(capUrl, agentID, m_scene); |
347 | 347 | ||
348 | args.Type = PollServiceEventArgs.EventType.Mesh; | 348 | args.Type = PollServiceEventArgs.EventType.Mesh; |
@@ -394,7 +394,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
394 | private readonly Scene m_scene; | 394 | private readonly Scene m_scene; |
395 | private ThrottleOutPacketType Throttle; | 395 | private ThrottleOutPacketType Throttle; |
396 | private readonly UUID User; | 396 | private readonly UUID User; |
397 | 397 | ||
398 | public MeshCapsDataThrottler(int pBytes, int max, int min, Scene pScene, UUID puser) | 398 | public MeshCapsDataThrottler(int pBytes, int max, int min, Scene pScene, UUID puser) |
399 | { | 399 | { |
400 | ThrottleBytes = pBytes; | 400 | ThrottleBytes = pBytes; |
@@ -422,7 +422,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
422 | // Normal | 422 | // Normal |
423 | if (BytesSent <= ThrottleBytes) | 423 | if (BytesSent <= ThrottleBytes) |
424 | { | 424 | { |
425 | BytesSent += response.bytes; | 425 | BytesSent += response.bytes; |
426 | return true; | 426 | return true; |
427 | } | 427 | } |
428 | else | 428 | else |
@@ -432,7 +432,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
432 | } | 432 | } |
433 | return haskey; | 433 | return haskey; |
434 | } | 434 | } |
435 | 435 | ||
436 | public void ProcessTime() | 436 | public void ProcessTime() |
437 | { | 437 | { |
438 | PassTime(); | 438 | PassTime(); |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs index 14a59fe..0c20e04 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/GetTextureModule.cs | |||
@@ -81,7 +81,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
81 | new OpenMetaverse.BlockingQueue<aPollRequest>(); | 81 | new OpenMetaverse.BlockingQueue<aPollRequest>(); |
82 | 82 | ||
83 | private Dictionary<UUID,PollServiceTextureEventArgs> m_pollservices = new Dictionary<UUID,PollServiceTextureEventArgs>(); | 83 | private Dictionary<UUID,PollServiceTextureEventArgs> m_pollservices = new Dictionary<UUID,PollServiceTextureEventArgs>(); |
84 | 84 | ||
85 | private string m_Url = "localhost"; | 85 | private string m_Url = "localhost"; |
86 | 86 | ||
87 | #region ISharedRegionModule Members | 87 | #region ISharedRegionModule Members |
@@ -148,7 +148,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
148 | } | 148 | } |
149 | private int ExtractImageThrottle(byte[] pthrottles) | 149 | private int ExtractImageThrottle(byte[] pthrottles) |
150 | { | 150 | { |
151 | 151 | ||
152 | byte[] adjData; | 152 | byte[] adjData; |
153 | int pos = 0; | 153 | int pos = 0; |
154 | 154 | ||
@@ -195,10 +195,10 @@ namespace OpenSim.Region.ClientStack.Linden | |||
195 | if(m_NumberScenes <= 0 && m_workerThreads != null) | 195 | if(m_NumberScenes <= 0 && m_workerThreads != null) |
196 | { | 196 | { |
197 | m_log.DebugFormat("[GetTextureModule] Closing"); | 197 | m_log.DebugFormat("[GetTextureModule] Closing"); |
198 | 198 | ||
199 | foreach (Thread t in m_workerThreads) | 199 | foreach (Thread t in m_workerThreads) |
200 | Watchdog.AbortThread(t.ManagedThreadId); | 200 | Watchdog.AbortThread(t.ManagedThreadId); |
201 | 201 | ||
202 | m_queue.Clear(); | 202 | m_queue.Clear(); |
203 | } | 203 | } |
204 | } | 204 | } |
@@ -222,7 +222,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
222 | private Scene m_scene; | 222 | private Scene m_scene; |
223 | private CapsDataThrottler m_throttler = new CapsDataThrottler(100000, 1400000,10000); | 223 | private CapsDataThrottler m_throttler = new CapsDataThrottler(100000, 1400000,10000); |
224 | public PollServiceTextureEventArgs(UUID pId, Scene scene) : | 224 | public PollServiceTextureEventArgs(UUID pId, Scene scene) : |
225 | base(null, "", null, null, null, pId, int.MaxValue) | 225 | base(null, "", null, null, null, pId, int.MaxValue) |
226 | { | 226 | { |
227 | m_scene = scene; | 227 | m_scene = scene; |
228 | // x is request id, y is userid | 228 | // x is request id, y is userid |
@@ -258,7 +258,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
258 | reqinfo.reqID = x; | 258 | reqinfo.reqID = x; |
259 | reqinfo.request = y; | 259 | reqinfo.request = y; |
260 | reqinfo.send503 = false; | 260 | reqinfo.send503 = false; |
261 | 261 | ||
262 | lock (responses) | 262 | lock (responses) |
263 | { | 263 | { |
264 | if (responses.Count > 0) | 264 | if (responses.Count > 0) |
@@ -317,7 +317,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
317 | Hashtable headers = new Hashtable(); | 317 | Hashtable headers = new Hashtable(); |
318 | headers["Retry-After"] = 30; | 318 | headers["Retry-After"] = 30; |
319 | response["headers"] = headers; | 319 | response["headers"] = headers; |
320 | 320 | ||
321 | lock (responses) | 321 | lock (responses) |
322 | responses[requestID] = new aPollResponse() {bytes = 0, response = response}; | 322 | responses[requestID] = new aPollResponse() {bytes = 0, response = response}; |
323 | 323 | ||
@@ -334,13 +334,13 @@ namespace OpenSim.Region.ClientStack.Linden | |||
334 | response["content_type"] = "text/plain"; | 334 | response["content_type"] = "text/plain"; |
335 | response["keepalive"] = false; | 335 | response["keepalive"] = false; |
336 | response["reusecontext"] = false; | 336 | response["reusecontext"] = false; |
337 | 337 | ||
338 | lock (responses) | 338 | lock (responses) |
339 | responses[requestID] = new aPollResponse() {bytes = 0, response = response}; | 339 | responses[requestID] = new aPollResponse() {bytes = 0, response = response}; |
340 | 340 | ||
341 | return; | 341 | return; |
342 | } | 342 | } |
343 | 343 | ||
344 | response = m_getTextureHandler.Handle(requestinfo.request); | 344 | response = m_getTextureHandler.Handle(requestinfo.request); |
345 | lock (responses) | 345 | lock (responses) |
346 | { | 346 | { |
@@ -349,8 +349,8 @@ namespace OpenSim.Region.ClientStack.Linden | |||
349 | bytes = (int) response["int_bytes"], | 349 | bytes = (int) response["int_bytes"], |
350 | response = response | 350 | response = response |
351 | }; | 351 | }; |
352 | 352 | ||
353 | } | 353 | } |
354 | m_throttler.ProcessTime(); | 354 | m_throttler.ProcessTime(); |
355 | } | 355 | } |
356 | 356 | ||
@@ -368,16 +368,16 @@ namespace OpenSim.Region.ClientStack.Linden | |||
368 | { | 368 | { |
369 | string capUrl = "/CAPS/" + UUID.Random() + "/"; | 369 | string capUrl = "/CAPS/" + UUID.Random() + "/"; |
370 | 370 | ||
371 | // Register this as a poll service | 371 | // Register this as a poll service |
372 | PollServiceTextureEventArgs args = new PollServiceTextureEventArgs(agentID, m_scene); | 372 | PollServiceTextureEventArgs args = new PollServiceTextureEventArgs(agentID, m_scene); |
373 | 373 | ||
374 | args.Type = PollServiceEventArgs.EventType.Texture; | 374 | args.Type = PollServiceEventArgs.EventType.Texture; |
375 | MainServer.Instance.AddPollServiceHTTPHandler(capUrl, args); | 375 | MainServer.Instance.AddPollServiceHTTPHandler(capUrl, args); |
376 | 376 | ||
377 | string hostName = m_scene.RegionInfo.ExternalHostName; | 377 | string hostName = m_scene.RegionInfo.ExternalHostName; |
378 | uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port; | 378 | uint port = (MainServer.Instance == null) ? 0 : MainServer.Instance.Port; |
379 | string protocol = "http"; | 379 | string protocol = "http"; |
380 | 380 | ||
381 | if (MainServer.Instance.UseSSL) | 381 | if (MainServer.Instance.UseSSL) |
382 | { | 382 | { |
383 | hostName = MainServer.Instance.SSLCommonName; | 383 | hostName = MainServer.Instance.SSLCommonName; |
@@ -484,5 +484,5 @@ namespace OpenSim.Region.ClientStack.Linden | |||
484 | } | 484 | } |
485 | public int ThrottleBytes; | 485 | public int ThrottleBytes; |
486 | } | 486 | } |
487 | } | 487 | } |
488 | } | 488 | } |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/MeshUploadFlagModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/MeshUploadFlagModule.cs index 1b68603..44bf1a5 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/MeshUploadFlagModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/MeshUploadFlagModule.cs | |||
@@ -133,7 +133,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
133 | // data["username"] = sp.Firstname + "." + sp.Lastname; | 133 | // data["username"] = sp.Firstname + "." + sp.Lastname; |
134 | // data["display_name_next_update"] = new OSDDate(DateTime.Now); | 134 | // data["display_name_next_update"] = new OSDDate(DateTime.Now); |
135 | // data["legacy_first_name"] = sp.Firstname; | 135 | // data["legacy_first_name"] = sp.Firstname; |
136 | data["mesh_upload_status"] = "valid"; | 136 | data["mesh_upload_status"] = "valid"; |
137 | // data["display_name"] = sp.Firstname + " " + sp.Lastname; | 137 | // data["display_name"] = sp.Firstname + " " + sp.Lastname; |
138 | // data["legacy_last_name"] = sp.Lastname; | 138 | // data["legacy_last_name"] = sp.Lastname; |
139 | // data["id"] = m_agentID; | 139 | // data["id"] = m_agentID; |
@@ -141,7 +141,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
141 | 141 | ||
142 | //Send back data | 142 | //Send back data |
143 | Hashtable responsedata = new Hashtable(); | 143 | Hashtable responsedata = new Hashtable(); |
144 | responsedata["int_response_code"] = 200; | 144 | responsedata["int_response_code"] = 200; |
145 | responsedata["content_type"] = "text/plain"; | 145 | responsedata["content_type"] = "text/plain"; |
146 | responsedata["keepalive"] = false; | 146 | responsedata["keepalive"] = false; |
147 | responsedata["str_response_string"] = OSDParser.SerializeLLSDXmlString(data); | 147 | responsedata["str_response_string"] = OSDParser.SerializeLLSDXmlString(data); |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs index 94f8bc1..189fa36 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/ObjectAdd.cs | |||
@@ -47,7 +47,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
47 | { | 47 | { |
48 | // private static readonly ILog m_log = | 48 | // private static readonly ILog m_log = |
49 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 49 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
50 | 50 | ||
51 | private Scene m_scene; | 51 | private Scene m_scene; |
52 | 52 | ||
53 | #region INonSharedRegionModule Members | 53 | #region INonSharedRegionModule Members |
@@ -76,7 +76,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
76 | } | 76 | } |
77 | 77 | ||
78 | public void Close() | 78 | public void Close() |
79 | { | 79 | { |
80 | } | 80 | } |
81 | 81 | ||
82 | public string Name | 82 | public string Name |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs index 713125c..6874662 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/ObjectCaps/UploadObjectAssetModule.cs | |||
@@ -189,7 +189,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
189 | if (i == 0) | 189 | if (i == 0) |
190 | { | 190 | { |
191 | rootpos = obj.Position; | 191 | rootpos = obj.Position; |
192 | // rootrot = obj.Rotation; | 192 | // rootrot = obj.Rotation; |
193 | } | 193 | } |
194 | 194 | ||
195 | // Combine the extraparams data into it's ugly blob again.... | 195 | // Combine the extraparams data into it's ugly blob again.... |
@@ -321,7 +321,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
321 | pbs.TextureEntry = tmp.GetBytes(); | 321 | pbs.TextureEntry = tmp.GetBytes(); |
322 | prim.Shape = pbs; | 322 | prim.Shape = pbs; |
323 | prim.Scale = obj.Scale; | 323 | prim.Scale = obj.Scale; |
324 | 324 | ||
325 | SceneObjectGroup grp = new SceneObjectGroup(); | 325 | SceneObjectGroup grp = new SceneObjectGroup(); |
326 | 326 | ||
327 | grp.SetRootPart(prim); | 327 | grp.SetRootPart(prim); |
@@ -329,21 +329,21 @@ namespace OpenSim.Region.ClientStack.Linden | |||
329 | if (i == 0) | 329 | if (i == 0) |
330 | { | 330 | { |
331 | rootGroup = grp; | 331 | rootGroup = grp; |
332 | 332 | ||
333 | } | 333 | } |
334 | grp.AttachToScene(m_scene); | 334 | grp.AttachToScene(m_scene); |
335 | grp.AbsolutePosition = obj.Position; | 335 | grp.AbsolutePosition = obj.Position; |
336 | prim.RotationOffset = obj.Rotation; | 336 | prim.RotationOffset = obj.Rotation; |
337 | 337 | ||
338 | // Required for linking | 338 | // Required for linking |
339 | grp.RootPart.ClearUpdateSchedule(); | 339 | grp.RootPart.ClearUpdateSchedule(); |
340 | 340 | ||
341 | if (m_scene.Permissions.CanRezObject(1, avatar.UUID, pos)) | 341 | if (m_scene.Permissions.CanRezObject(1, avatar.UUID, pos)) |
342 | { | 342 | { |
343 | m_scene.AddSceneObject(grp); | 343 | m_scene.AddSceneObject(grp); |
344 | grp.AbsolutePosition = obj.Position; | 344 | grp.AbsolutePosition = obj.Position; |
345 | } | 345 | } |
346 | 346 | ||
347 | allparts[i] = grp; | 347 | allparts[i] = grp; |
348 | } | 348 | } |
349 | 349 | ||
@@ -359,7 +359,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
359 | pos | 359 | pos |
360 | = m_scene.GetNewRezLocation( | 360 | = m_scene.GetNewRezLocation( |
361 | Vector3.Zero, rootpos, UUID.Zero, rot, (byte)1, 1, true, allparts[0].GroupScale, false); | 361 | Vector3.Zero, rootpos, UUID.Zero, rot, (byte)1, 1, true, allparts[0].GroupScale, false); |
362 | 362 | ||
363 | responsedata["int_response_code"] = 200; //501; //410; //404; | 363 | responsedata["int_response_code"] = 200; //501; //410; //404; |
364 | responsedata["content_type"] = "text/plain"; | 364 | responsedata["content_type"] = "text/plain"; |
365 | responsedata["keepalive"] = false; | 365 | responsedata["keepalive"] = false; |
@@ -367,7 +367,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
367 | 367 | ||
368 | return responsedata; | 368 | return responsedata; |
369 | } | 369 | } |
370 | 370 | ||
371 | private string ConvertUintToBytes(uint val) | 371 | private string ConvertUintToBytes(uint val) |
372 | { | 372 | { |
373 | byte[] resultbytes = Utils.UIntToBytes(val); | 373 | byte[] resultbytes = Utils.UIntToBytes(val); |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/Properties/AssemblyInfo.cs b/OpenSim/Region/ClientStack/Linden/Caps/Properties/AssemblyInfo.cs index 67272dd..f36826b 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/Properties/AssemblyInfo.cs | |||
@@ -2,7 +2,7 @@ | |||
2 | using System.Runtime.CompilerServices; | 2 | using System.Runtime.CompilerServices; |
3 | using System.Runtime.InteropServices; | 3 | using System.Runtime.InteropServices; |
4 | 4 | ||
5 | // General Information about an assembly is controlled through the following | 5 | // General Information about an assembly is controlled through the following |
6 | // set of attributes. Change these attribute values to modify the information | 6 | // set of attributes. Change these attribute values to modify the information |
7 | // associated with an assembly. | 7 | // associated with an assembly. |
8 | [assembly: AssemblyTitle("OpenSim.Region.ClientStack.LindenCaps")] | 8 | [assembly: AssemblyTitle("OpenSim.Region.ClientStack.LindenCaps")] |
@@ -14,8 +14,8 @@ using System.Runtime.InteropServices; | |||
14 | [assembly: AssemblyTrademark("")] | 14 | [assembly: AssemblyTrademark("")] |
15 | [assembly: AssemblyCulture("")] | 15 | [assembly: AssemblyCulture("")] |
16 | 16 | ||
17 | // Setting ComVisible to false makes the types in this assembly not visible | 17 | // Setting ComVisible to false makes the types in this assembly not visible |
18 | // to COM components. If you need to access a type in this assembly from | 18 | // to COM components. If you need to access a type in this assembly from |
19 | // COM, set the ComVisible attribute to true on that type. | 19 | // COM, set the ComVisible attribute to true on that type. |
20 | [assembly: ComVisible(false)] | 20 | [assembly: ComVisible(false)] |
21 | 21 | ||
@@ -25,7 +25,7 @@ using System.Runtime.InteropServices; | |||
25 | // Version information for an assembly consists of the following four values: | 25 | // Version information for an assembly consists of the following four values: |
26 | // | 26 | // |
27 | // Major Version | 27 | // Major Version |
28 | // Minor Version | 28 | // Minor Version |
29 | // Build Number | 29 | // Build Number |
30 | // Revision | 30 | // Revision |
31 | // | 31 | // |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/RegionConsoleModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/RegionConsoleModule.cs index 5196368..b3e3ac3 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/RegionConsoleModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/RegionConsoleModule.cs | |||
@@ -58,7 +58,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
58 | { | 58 | { |
59 | // private static readonly ILog m_log = | 59 | // private static readonly ILog m_log = |
60 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 60 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
61 | 61 | ||
62 | private Scene m_scene; | 62 | private Scene m_scene; |
63 | private IEventQueue m_eventQueue; | 63 | private IEventQueue m_eventQueue; |
64 | private Commands m_commands = new Commands(); | 64 | private Commands m_commands = new Commands(); |
@@ -155,7 +155,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
155 | 155 | ||
156 | SendConsoleOutput(agentID, reply); | 156 | SendConsoleOutput(agentID, reply); |
157 | } | 157 | } |
158 | 158 | ||
159 | public void AddCommand(string module, bool shared, string command, string help, string longhelp, CommandDelegate fn) | 159 | public void AddCommand(string module, bool shared, string command, string help, string longhelp, CommandDelegate fn) |
160 | { | 160 | { |
161 | m_commands.AddCommand(module, shared, command, help, longhelp, fn); | 161 | m_commands.AddCommand(module, shared, command, help, longhelp, fn); |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/SimulatorFeaturesModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/SimulatorFeaturesModule.cs index f7259a6..39f5baf 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/SimulatorFeaturesModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/SimulatorFeaturesModule.cs | |||
@@ -50,7 +50,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
50 | /// This is required for uploading Mesh. | 50 | /// This is required for uploading Mesh. |
51 | /// Since is accepts an open-ended response, we also send more information | 51 | /// Since is accepts an open-ended response, we also send more information |
52 | /// for viewers that care to interpret it. | 52 | /// for viewers that care to interpret it. |
53 | /// | 53 | /// |
54 | /// NOTE: Part of this code was adapted from the Aurora project, specifically | 54 | /// NOTE: Part of this code was adapted from the Aurora project, specifically |
55 | /// the normal part of the response in the capability handler. | 55 | /// the normal part of the response in the capability handler. |
56 | /// </remarks> | 56 | /// </remarks> |
@@ -82,7 +82,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
82 | IConfig config = source.Configs["SimulatorFeatures"]; | 82 | IConfig config = source.Configs["SimulatorFeatures"]; |
83 | 83 | ||
84 | if (config != null) | 84 | if (config != null) |
85 | { | 85 | { |
86 | // | 86 | // |
87 | // All this is obsolete since getting these features from the grid service!! | 87 | // All this is obsolete since getting these features from the grid service!! |
88 | // Will be removed after the next release | 88 | // Will be removed after the next release |
@@ -251,7 +251,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
251 | 251 | ||
252 | //Send back data | 252 | //Send back data |
253 | Hashtable responsedata = new Hashtable(); | 253 | Hashtable responsedata = new Hashtable(); |
254 | responsedata["int_response_code"] = 200; | 254 | responsedata["int_response_code"] = 200; |
255 | responsedata["content_type"] = "text/plain"; | 255 | responsedata["content_type"] = "text/plain"; |
256 | responsedata["keepalive"] = false; | 256 | responsedata["keepalive"] = false; |
257 | 257 | ||
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/Tests/WebFetchInvDescModuleTests.cs b/OpenSim/Region/ClientStack/Linden/Caps/Tests/WebFetchInvDescModuleTests.cs index db16ccb..6ffed4d 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/Tests/WebFetchInvDescModuleTests.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/Tests/WebFetchInvDescModuleTests.cs | |||
@@ -151,7 +151,7 @@ namespace OpenSim.Region.ClientStack.Linden.Caps.Tests | |||
151 | OSDMap responseOsd = (OSDMap)OSDParser.DeserializeLLSDXml(context.ResponseBody); | 151 | OSDMap responseOsd = (OSDMap)OSDParser.DeserializeLLSDXml(context.ResponseBody); |
152 | OSDArray foldersOsd = (OSDArray)responseOsd["folders"]; | 152 | OSDArray foldersOsd = (OSDArray)responseOsd["folders"]; |
153 | OSDMap folderOsd = (OSDMap)foldersOsd[0]; | 153 | OSDMap folderOsd = (OSDMap)foldersOsd[0]; |
154 | 154 | ||
155 | // A sanity check that the response has the expected number of descendents for a default inventory | 155 | // A sanity check that the response has the expected number of descendents for a default inventory |
156 | // TODO: Need a more thorough check. | 156 | // TODO: Need a more thorough check. |
157 | Assert.That((int)folderOsd["descendents"], Is.EqualTo(16)); | 157 | Assert.That((int)folderOsd["descendents"], Is.EqualTo(16)); |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/UploadBakedTextureModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/UploadBakedTextureModule.cs index 8fd8d1f..dfe097e 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/UploadBakedTextureModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/UploadBakedTextureModule.cs | |||
@@ -84,7 +84,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
84 | public void AddRegion(Scene s) | 84 | public void AddRegion(Scene s) |
85 | { | 85 | { |
86 | m_scene = s; | 86 | m_scene = s; |
87 | 87 | ||
88 | } | 88 | } |
89 | 89 | ||
90 | public void RemoveRegion(Scene s) | 90 | public void RemoveRegion(Scene s) |
@@ -94,14 +94,14 @@ namespace OpenSim.Region.ClientStack.Linden | |||
94 | s.EventManager.OnRemovePresence -= DeRegisterPresence; | 94 | s.EventManager.OnRemovePresence -= DeRegisterPresence; |
95 | m_BakedTextureModule = null; | 95 | m_BakedTextureModule = null; |
96 | m_scene = null; | 96 | m_scene = null; |
97 | } | 97 | } |
98 | 98 | ||
99 | public void RegionLoaded(Scene s) | 99 | public void RegionLoaded(Scene s) |
100 | { | 100 | { |
101 | m_scene.EventManager.OnRegisterCaps += RegisterCaps; | 101 | m_scene.EventManager.OnRegisterCaps += RegisterCaps; |
102 | m_scene.EventManager.OnNewPresence += RegisterNewPresence; | 102 | m_scene.EventManager.OnNewPresence += RegisterNewPresence; |
103 | m_scene.EventManager.OnRemovePresence += DeRegisterPresence; | 103 | m_scene.EventManager.OnRemovePresence += DeRegisterPresence; |
104 | 104 | ||
105 | } | 105 | } |
106 | 106 | ||
107 | private void DeRegisterPresence(UUID agentId) | 107 | private void DeRegisterPresence(UUID agentId) |
@@ -205,7 +205,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
205 | } | 205 | } |
206 | } | 206 | } |
207 | else | 207 | else |
208 | { | 208 | { |
209 | for (int i = 0; i < maxCacheitemsLoop; i++) | 209 | for (int i = 0; i < maxCacheitemsLoop; i++) |
210 | { | 210 | { |
211 | if (textureEntry.FaceTextures.Length > cacheItems[i].TextureIndex) | 211 | if (textureEntry.FaceTextures.Length > cacheItems[i].TextureIndex) |
@@ -285,7 +285,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
285 | avatarhandler.UploadBakedTexture, | 285 | avatarhandler.UploadBakedTexture, |
286 | "UploadBakedTexture", | 286 | "UploadBakedTexture", |
287 | agentID.ToString())); | 287 | agentID.ToString())); |
288 | 288 | ||
289 | } | 289 | } |
290 | else | 290 | else |
291 | { | 291 | { |
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs index ba4fb76..e0ec842 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs | |||
@@ -456,7 +456,7 @@ namespace OpenSim.Region.ClientStack.Linden | |||
456 | catch (Exception e) | 456 | catch (Exception e) |
457 | { | 457 | { |
458 | m_log.ErrorFormat( | 458 | m_log.ErrorFormat( |
459 | "[INVENTORY]: Failed to process queued inventory request {0} for {1}. Exception {3}", | 459 | "[INVENTORY]: Failed to process queued inventory request {0} for {1}. Exception {3}", |
460 | poolreq.reqID, poolreq.presence != null ? poolreq.presence.Name : "unknown", e); | 460 | poolreq.reqID, poolreq.presence != null ? poolreq.presence.Name : "unknown", e); |
461 | } | 461 | } |
462 | } | 462 | } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs b/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs index 15d6f7f..0a6785c 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/J2KImage.cs | |||
@@ -98,7 +98,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
98 | } | 98 | } |
99 | 99 | ||
100 | /// <summary> | 100 | /// <summary> |
101 | /// Sends packets for this texture to a client until packetsToSend is | 101 | /// Sends packets for this texture to a client until packetsToSend is |
102 | /// hit or the transfer completes | 102 | /// hit or the transfer completes |
103 | /// </summary> | 103 | /// </summary> |
104 | /// <param name="client">Reference to the client that the packets are destined for</param> | 104 | /// <param name="client">Reference to the client that the packets are destined for</param> |
@@ -198,7 +198,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
198 | m_currentPacket = m_stopPacket; | 198 | m_currentPacket = m_stopPacket; |
199 | return; | 199 | return; |
200 | } | 200 | } |
201 | 201 | ||
202 | if (DiscardLevel >= 0 || m_stopPacket == 0) | 202 | if (DiscardLevel >= 0 || m_stopPacket == 0) |
203 | { | 203 | { |
204 | // This shouldn't happen, but if it does, we really can't proceed | 204 | // This shouldn't happen, but if it does, we really can't proceed |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 27ca740..dba2872 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -434,7 +434,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
434 | /// Entity update queues | 434 | /// Entity update queues |
435 | /// </summary> | 435 | /// </summary> |
436 | public PriorityQueue EntityUpdateQueue { get { return m_entityUpdates; } } | 436 | public PriorityQueue EntityUpdateQueue { get { return m_entityUpdates; } } |
437 | 437 | ||
438 | /// <summary> | 438 | /// <summary> |
439 | /// First name of the agent/avatar represented by the client | 439 | /// First name of the agent/avatar represented by the client |
440 | /// </summary> | 440 | /// </summary> |
@@ -478,7 +478,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
478 | public List<uint> SelectedObjects {get; private set;} | 478 | public List<uint> SelectedObjects {get; private set;} |
479 | 479 | ||
480 | public bool SendLogoutPacketWhenClosing { set { m_SendLogoutPacketWhenClosing = value; } } | 480 | public bool SendLogoutPacketWhenClosing { set { m_SendLogoutPacketWhenClosing = value; } } |
481 | 481 | ||
482 | 482 | ||
483 | #endregion Properties | 483 | #endregion Properties |
484 | 484 | ||
@@ -554,7 +554,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
554 | // there is some unidentified connection problem, not where we have issues due to deadlock | 554 | // there is some unidentified connection problem, not where we have issues due to deadlock |
555 | if (!IsActive && !force) | 555 | if (!IsActive && !force) |
556 | { | 556 | { |
557 | m_log.DebugFormat( "{0} Not attempting to close inactive client {1} in {2} since force flag is not set", | 557 | m_log.DebugFormat( "{0} Not attempting to close inactive client {1} in {2} since force flag is not set", |
558 | LogHeader, Name, m_scene.Name); | 558 | LogHeader, Name, m_scene.Name); |
559 | 559 | ||
560 | return; | 560 | return; |
@@ -713,13 +713,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
713 | /// <param name="packetType"></param> | 713 | /// <param name="packetType"></param> |
714 | /// <param name="handler"></param> | 714 | /// <param name="handler"></param> |
715 | /// <param name="doAsync"> | 715 | /// <param name="doAsync"> |
716 | /// If true, when the packet is received handle it on a different thread. Whether this is given direct to | 716 | /// If true, when the packet is received handle it on a different thread. Whether this is given direct to |
717 | /// a threadpool thread or placed in a queue depends on the inEngine parameter. | 717 | /// a threadpool thread or placed in a queue depends on the inEngine parameter. |
718 | /// </param> | 718 | /// </param> |
719 | /// <param name="inEngine"> | 719 | /// <param name="inEngine"> |
720 | /// If async is false then this parameter is ignored. | 720 | /// If async is false then this parameter is ignored. |
721 | /// If async is true and inEngine is false, then the packet is sent directly to a | 721 | /// If async is true and inEngine is false, then the packet is sent directly to a |
722 | /// threadpool thread. | 722 | /// threadpool thread. |
723 | /// If async is true and inEngine is true, then the packet is sent to the IncomingPacketAsyncHandlingEngine. | 723 | /// If async is true and inEngine is true, then the packet is sent to the IncomingPacketAsyncHandlingEngine. |
724 | /// This may result in slower handling but reduces the risk of overloading the simulator when there are many | 724 | /// This may result in slower handling but reduces the risk of overloading the simulator when there are many |
725 | /// simultaneous async requests. | 725 | /// simultaneous async requests. |
@@ -820,7 +820,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
820 | public void ProcessSpecificPacketAsync(object state) | 820 | public void ProcessSpecificPacketAsync(object state) |
821 | { | 821 | { |
822 | AsyncPacketProcess packetObject = (AsyncPacketProcess)state; | 822 | AsyncPacketProcess packetObject = (AsyncPacketProcess)state; |
823 | 823 | ||
824 | try | 824 | try |
825 | { | 825 | { |
826 | packetObject.result = packetObject.Method(packetObject.ClientView, packetObject.Pack); | 826 | packetObject.result = packetObject.Method(packetObject.ClientView, packetObject.Pack); |
@@ -830,7 +830,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
830 | // Make sure that we see any exception caused by the asynchronous operation. | 830 | // Make sure that we see any exception caused by the asynchronous operation. |
831 | m_log.Error( | 831 | m_log.Error( |
832 | string.Format( | 832 | string.Format( |
833 | "[LLCLIENTVIEW]: Caught exception while processing {0} for {1} ", packetObject.Pack, Name), | 833 | "[LLCLIENTVIEW]: Caught exception while processing {0} for {1} ", packetObject.Pack, Name), |
834 | e); | 834 | e); |
835 | } | 835 | } |
836 | } | 836 | } |
@@ -976,7 +976,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
976 | if (im.imSessionID == UUID.Zero.Guid) | 976 | if (im.imSessionID == UUID.Zero.Guid) |
977 | msg.MessageBlock.ID = new UUID(im.fromAgentID) ^ new UUID(im.toAgentID); | 977 | msg.MessageBlock.ID = new UUID(im.fromAgentID) ^ new UUID(im.toAgentID); |
978 | else | 978 | else |
979 | msg.MessageBlock.ID = new UUID(im.imSessionID); | 979 | msg.MessageBlock.ID = new UUID(im.imSessionID); |
980 | msg.MessageBlock.Offline = im.offline; | 980 | msg.MessageBlock.Offline = im.offline; |
981 | msg.MessageBlock.ParentEstateID = im.ParentEstateID; | 981 | msg.MessageBlock.ParentEstateID = im.ParentEstateID; |
982 | msg.MessageBlock.Position = im.Position; | 982 | msg.MessageBlock.Position = im.Position; |
@@ -1301,7 +1301,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1301 | 1301 | ||
1302 | // Legacy form of invocation that passes around a bare data array. | 1302 | // Legacy form of invocation that passes around a bare data array. |
1303 | // Just ignore what was passed and use the real terrain info that is part of the scene. | 1303 | // Just ignore what was passed and use the real terrain info that is part of the scene. |
1304 | // As a HORRIBLE kludge in an attempt to not change the definition of IClientAPI, | 1304 | // As a HORRIBLE kludge in an attempt to not change the definition of IClientAPI, |
1305 | // there is a special form for specifying multiple terrain patches to send. | 1305 | // there is a special form for specifying multiple terrain patches to send. |
1306 | // The form is to pass 'px' as negative the number of patches to send and to | 1306 | // The form is to pass 'px' as negative the number of patches to send and to |
1307 | // pass the float array as pairs of patch X and Y coordinates. So, passing 'px' | 1307 | // pass the float array as pairs of patch X and Y coordinates. So, passing 'px' |
@@ -1396,7 +1396,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1396 | public virtual void SendWindData(int version, Vector2[] windSpeeds) | 1396 | public virtual void SendWindData(int version, Vector2[] windSpeeds) |
1397 | { | 1397 | { |
1398 | // Vector2[] windSpeeds = (Vector2[])o; | 1398 | // Vector2[] windSpeeds = (Vector2[])o; |
1399 | 1399 | ||
1400 | ulong handle = this.Scene.RegionInfo.RegionHandle; | 1400 | ulong handle = this.Scene.RegionInfo.RegionHandle; |
1401 | bool isNewData; | 1401 | bool isNewData; |
1402 | lock(lastWindPackets) | 1402 | lock(lastWindPackets) |
@@ -1780,7 +1780,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1780 | m_entityUpdates.Remove(localIDs); | 1780 | m_entityUpdates.Remove(localIDs); |
1781 | 1781 | ||
1782 | KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject); | 1782 | KillObjectPacket kill = (KillObjectPacket)PacketPool.Instance.GetPacket(PacketType.KillObject); |
1783 | 1783 | ||
1784 | int perpacket = localIDs.Count; | 1784 | int perpacket = localIDs.Count; |
1785 | if(perpacket > 200) | 1785 | if(perpacket > 200) |
1786 | perpacket = 200; | 1786 | perpacket = 200; |
@@ -2545,7 +2545,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2545 | for (int i = 0; i < buttonlabels.Length; i++) | 2545 | for (int i = 0; i < buttonlabels.Length; i++) |
2546 | { | 2546 | { |
2547 | buttons[i] = new ScriptDialogPacket.ButtonsBlock(); | 2547 | buttons[i] = new ScriptDialogPacket.ButtonsBlock(); |
2548 | buttons[i].ButtonLabel = Util.StringToBytes(buttonlabels[i],24); | 2548 | buttons[i].ButtonLabel = Util.StringToBytes(buttonlabels[i],24); |
2549 | } | 2549 | } |
2550 | dialog.Buttons = buttons; | 2550 | dialog.Buttons = buttons; |
2551 | 2551 | ||
@@ -2863,15 +2863,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2863 | public void SendSelectedPartsProprieties(List<ISceneEntity> parts) | 2863 | public void SendSelectedPartsProprieties(List<ISceneEntity> parts) |
2864 | { | 2864 | { |
2865 | /* not in use | 2865 | /* not in use |
2866 | // udp part | 2866 | // udp part |
2867 | ObjectPropertiesPacket packet = | 2867 | ObjectPropertiesPacket packet = |
2868 | (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); | 2868 | (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); |
2869 | ObjectPropertiesPacket.ObjectDataBlock[] ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[parts.Count]; | 2869 | ObjectPropertiesPacket.ObjectDataBlock[] ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[parts.Count]; |
2870 | 2870 | ||
2871 | int i = 0; | 2871 | int i = 0; |
2872 | foreach(SceneObjectPart sop in parts) | 2872 | foreach(SceneObjectPart sop in parts) |
2873 | ObjectData[i++] = CreateObjectPropertiesBlock(sop); | 2873 | ObjectData[i++] = CreateObjectPropertiesBlock(sop); |
2874 | 2874 | ||
2875 | packet.ObjectData = ObjectData; | 2875 | packet.ObjectData = ObjectData; |
2876 | packet.Header.Zerocoded = true; | 2876 | packet.Header.Zerocoded = true; |
2877 | // udp send splits this mega packets correctly | 2877 | // udp send splits this mega packets correctly |
@@ -3003,13 +3003,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3003 | isWearable = ((AssetType) req.AssetInf.Type == | 3003 | isWearable = ((AssetType) req.AssetInf.Type == |
3004 | AssetType.Bodypart || (AssetType) req.AssetInf.Type == AssetType.Clothing); | 3004 | AssetType.Bodypart || (AssetType) req.AssetInf.Type == AssetType.Clothing); |
3005 | 3005 | ||
3006 | 3006 | ||
3007 | //m_log.Debug("sending asset " + req.RequestAssetID + ", iswearable: " + isWearable); | 3007 | //m_log.Debug("sending asset " + req.RequestAssetID + ", iswearable: " + isWearable); |
3008 | 3008 | ||
3009 | 3009 | ||
3010 | //if (isWearable) | 3010 | //if (isWearable) |
3011 | // m_log.Debug((AssetType)req.AssetInf.Type); | 3011 | // m_log.Debug((AssetType)req.AssetInf.Type); |
3012 | 3012 | ||
3013 | TransferInfoPacket Transfer = new TransferInfoPacket(); | 3013 | TransferInfoPacket Transfer = new TransferInfoPacket(); |
3014 | Transfer.TransferInfo.ChannelType = 2; | 3014 | Transfer.TransferInfo.ChannelType = 2; |
3015 | Transfer.TransferInfo.Status = 0; | 3015 | Transfer.TransferInfo.Status = 0; |
@@ -3537,7 +3537,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3537 | { | 3537 | { |
3538 | if(avatarID != AgentId) | 3538 | if(avatarID != AgentId) |
3539 | m_log.Debug("[CLIENT]: SendAgentGroupDataUpdate avatarID != AgentId"); | 3539 | m_log.Debug("[CLIENT]: SendAgentGroupDataUpdate avatarID != AgentId"); |
3540 | 3540 | ||
3541 | IEventQueue eq = this.Scene.RequestModuleInterface<IEventQueue>(); | 3541 | IEventQueue eq = this.Scene.RequestModuleInterface<IEventQueue>(); |
3542 | if(eq != null) | 3542 | if(eq != null) |
3543 | { | 3543 | { |
@@ -3862,7 +3862,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3862 | aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[count]; | 3862 | aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[count]; |
3863 | AgentWearablesUpdatePacket.WearableDataBlock awb; | 3863 | AgentWearablesUpdatePacket.WearableDataBlock awb; |
3864 | int idx = 0; | 3864 | int idx = 0; |
3865 | 3865 | ||
3866 | for (int i = 0; i < wearables.Length; i++) | 3866 | for (int i = 0; i < wearables.Length; i++) |
3867 | { | 3867 | { |
3868 | for (int j = 0; j < wearables[i].Count; j++) | 3868 | for (int j = 0; j < wearables[i].Count; j++) |
@@ -3878,7 +3878,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3878 | // "[APPEARANCE]: Sending wearable item/asset {0} {1} (index {2}) for {3}", | 3878 | // "[APPEARANCE]: Sending wearable item/asset {0} {1} (index {2}) for {3}", |
3879 | // awb.ItemID, awb.AssetID, i, Name); | 3879 | // awb.ItemID, awb.AssetID, i, Name); |
3880 | } | 3880 | } |
3881 | } | 3881 | } |
3882 | 3882 | ||
3883 | OutPacket(aw, ThrottleOutPacketType.Task | ThrottleOutPacketType.HighPriority); | 3883 | OutPacket(aw, ThrottleOutPacketType.Task | ThrottleOutPacketType.HighPriority); |
3884 | } | 3884 | } |
@@ -3955,7 +3955,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3955 | // m_log.DebugFormat( | 3955 | // m_log.DebugFormat( |
3956 | // "[LLCLIENTVIEW]: Sending immediate object update for avatar {0} {1} to {2} {3}", | 3956 | // "[LLCLIENTVIEW]: Sending immediate object update for avatar {0} {1} to {2} {3}", |
3957 | // avatar.Name, avatar.UUID, Name, AgentId); | 3957 | // avatar.Name, avatar.UUID, Name, AgentId); |
3958 | 3958 | ||
3959 | ScenePresence presence = avatar as ScenePresence; | 3959 | ScenePresence presence = avatar as ScenePresence; |
3960 | if (presence == null) | 3960 | if (presence == null) |
3961 | return; | 3961 | return; |
@@ -3965,7 +3965,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3965 | 3965 | ||
3966 | objupdate.RegionData.RegionHandle = presence.RegionHandle; | 3966 | objupdate.RegionData.RegionHandle = presence.RegionHandle; |
3967 | // objupdate.RegionData.TimeDilation = ushort.MaxValue; | 3967 | // objupdate.RegionData.TimeDilation = ushort.MaxValue; |
3968 | objupdate.RegionData.TimeDilation = Utils.FloatToUInt16(m_scene.TimeDilation, 0.0f, 1.0f); | 3968 | objupdate.RegionData.TimeDilation = Utils.FloatToUInt16(m_scene.TimeDilation, 0.0f, 1.0f); |
3969 | objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; | 3969 | objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; |
3970 | objupdate.ObjectData[0] = CreateAvatarUpdateBlock(presence); | 3970 | objupdate.ObjectData[0] = CreateAvatarUpdateBlock(presence); |
3971 | 3971 | ||
@@ -4021,7 +4021,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4021 | 4021 | ||
4022 | #region Primitive Packet/Data Sending Methods | 4022 | #region Primitive Packet/Data Sending Methods |
4023 | 4023 | ||
4024 | 4024 | ||
4025 | /// <summary> | 4025 | /// <summary> |
4026 | /// Generate one of the object update packets based on PrimUpdateFlags | 4026 | /// Generate one of the object update packets based on PrimUpdateFlags |
4027 | /// and broadcast the packet to clients | 4027 | /// and broadcast the packet to clients |
@@ -4054,18 +4054,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4054 | uint priority = m_prioritizer.GetUpdatePriority(this, entity); | 4054 | uint priority = m_prioritizer.GetUpdatePriority(this, entity); |
4055 | 4055 | ||
4056 | lock (m_entityUpdates.SyncRoot) | 4056 | lock (m_entityUpdates.SyncRoot) |
4057 | m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags)); | 4057 | m_entityUpdates.Enqueue(priority, new EntityUpdate(entity, updateFlags)); |
4058 | } | 4058 | } |
4059 | 4059 | ||
4060 | /// <summary> | 4060 | /// <summary> |
4061 | /// Requeue an EntityUpdate when it was not acknowledged by the client. | 4061 | /// Requeue an EntityUpdate when it was not acknowledged by the client. |
4062 | /// We will update the priority and put it in the correct queue, merging update flags | 4062 | /// We will update the priority and put it in the correct queue, merging update flags |
4063 | /// with any other updates that may be queued for the same entity. | 4063 | /// with any other updates that may be queued for the same entity. |
4064 | /// The original update time is used for the merged update. | 4064 | /// The original update time is used for the merged update. |
4065 | /// </summary> | 4065 | /// </summary> |
4066 | private void ResendPrimUpdate(EntityUpdate update) | 4066 | private void ResendPrimUpdate(EntityUpdate update) |
4067 | { | 4067 | { |
4068 | // If the update exists in priority queue, it will be updated. | 4068 | // If the update exists in priority queue, it will be updated. |
4069 | // If it does not exist then it will be added with the current (rather than its original) priority | 4069 | // If it does not exist then it will be added with the current (rather than its original) priority |
4070 | uint priority = m_prioritizer.GetUpdatePriority(this, update.Entity); | 4070 | uint priority = m_prioritizer.GetUpdatePriority(this, update.Entity); |
4071 | 4071 | ||
@@ -4074,9 +4074,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4074 | } | 4074 | } |
4075 | 4075 | ||
4076 | /// <summary> | 4076 | /// <summary> |
4077 | /// Requeue a list of EntityUpdates when they were not acknowledged by the client. | 4077 | /// Requeue a list of EntityUpdates when they were not acknowledged by the client. |
4078 | /// We will update the priority and put it in the correct queue, merging update flags | 4078 | /// We will update the priority and put it in the correct queue, merging update flags |
4079 | /// with any other updates that may be queued for the same entity. | 4079 | /// with any other updates that may be queued for the same entity. |
4080 | /// The original update time is used for the merged update. | 4080 | /// The original update time is used for the merged update. |
4081 | /// </summary> | 4081 | /// </summary> |
4082 | private void ResendPrimUpdates(List<EntityUpdate> updates, OutgoingPacket oPacket) | 4082 | private void ResendPrimUpdates(List<EntityUpdate> updates, OutgoingPacket oPacket) |
@@ -4140,7 +4140,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4140 | lock (m_entityUpdates.SyncRoot) | 4140 | lock (m_entityUpdates.SyncRoot) |
4141 | if (!m_entityUpdates.TryDequeue(out update, out timeinqueue)) | 4141 | if (!m_entityUpdates.TryDequeue(out update, out timeinqueue)) |
4142 | break; | 4142 | break; |
4143 | 4143 | ||
4144 | PrimUpdateFlags updateFlags = (PrimUpdateFlags)update.Flags; | 4144 | PrimUpdateFlags updateFlags = (PrimUpdateFlags)update.Flags; |
4145 | 4145 | ||
4146 | if(updateFlags.HasFlag(PrimUpdateFlags.Kill)) | 4146 | if(updateFlags.HasFlag(PrimUpdateFlags.Kill)) |
@@ -4243,7 +4243,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4243 | dpos = (float)Math.Sqrt(dpos) - bradius; | 4243 | dpos = (float)Math.Sqrt(dpos) - bradius; |
4244 | if(dpos > cullingrange) | 4244 | if(dpos > cullingrange) |
4245 | continue; | 4245 | continue; |
4246 | 4246 | ||
4247 | GroupsNeedFullUpdate.Add(grp); | 4247 | GroupsNeedFullUpdate.Add(grp); |
4248 | continue; | 4248 | continue; |
4249 | } | 4249 | } |
@@ -4276,7 +4276,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4276 | bool canUseCompressed = true; | 4276 | bool canUseCompressed = true; |
4277 | bool canUseImproved = true; | 4277 | bool canUseImproved = true; |
4278 | 4278 | ||
4279 | 4279 | ||
4280 | // Compressed object updates only make sense for LL primitives | 4280 | // Compressed object updates only make sense for LL primitives |
4281 | if (!(update.Entity is SceneObjectPart)) | 4281 | if (!(update.Entity is SceneObjectPart)) |
4282 | { | 4282 | { |
@@ -4316,14 +4316,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4316 | canUseImproved = false; | 4316 | canUseImproved = false; |
4317 | } | 4317 | } |
4318 | } | 4318 | } |
4319 | 4319 | ||
4320 | #endregion UpdateFlags to packet type conversion | 4320 | #endregion UpdateFlags to packet type conversion |
4321 | 4321 | ||
4322 | #region Block Construction | 4322 | #region Block Construction |
4323 | 4323 | ||
4324 | // TODO: Remove this once we can build compressed updates | 4324 | // TODO: Remove this once we can build compressed updates |
4325 | canUseCompressed = false; | 4325 | canUseCompressed = false; |
4326 | 4326 | ||
4327 | if (!canUseImproved && !canUseCompressed) | 4327 | if (!canUseImproved && !canUseCompressed) |
4328 | { | 4328 | { |
4329 | ObjectUpdatePacket.ObjectDataBlock ablock; | 4329 | ObjectUpdatePacket.ObjectDataBlock ablock; |
@@ -4368,7 +4368,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4368 | } | 4368 | } |
4369 | 4369 | ||
4370 | #region Packet Sending | 4370 | #region Packet Sending |
4371 | 4371 | ||
4372 | ushort timeDilation; | 4372 | ushort timeDilation; |
4373 | 4373 | ||
4374 | if(!IsActive) | 4374 | if(!IsActive) |
@@ -4398,7 +4398,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4398 | packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; | 4398 | packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; |
4399 | packet.RegionData.TimeDilation = timeDilation; | 4399 | packet.RegionData.TimeDilation = timeDilation; |
4400 | packet.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[objectUpdateBlocks.Count]; | 4400 | packet.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[objectUpdateBlocks.Count]; |
4401 | 4401 | ||
4402 | for (int i = 0; i < objectUpdateBlocks.Count; i++) | 4402 | for (int i = 0; i < objectUpdateBlocks.Count; i++) |
4403 | packet.ObjectData[i] = objectUpdateBlocks[i]; | 4403 | packet.ObjectData[i] = objectUpdateBlocks[i]; |
4404 | 4404 | ||
@@ -4406,7 +4406,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4406 | 4406 | ||
4407 | OutPacket(packet, ThrottleOutPacketType.Task, true, delegate(OutgoingPacket oPacket) { ResendPrimUpdates(objectUpdates.Value, oPacket); }); | 4407 | OutPacket(packet, ThrottleOutPacketType.Task, true, delegate(OutgoingPacket oPacket) { ResendPrimUpdates(objectUpdates.Value, oPacket); }); |
4408 | } | 4408 | } |
4409 | 4409 | ||
4410 | if (compressedUpdateBlocks.Count > 0) | 4410 | if (compressedUpdateBlocks.Count > 0) |
4411 | { | 4411 | { |
4412 | ObjectUpdateCompressedPacket packet = (ObjectUpdateCompressedPacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdateCompressed); | 4412 | ObjectUpdateCompressedPacket packet = (ObjectUpdateCompressedPacket)PacketPool.Instance.GetPacket(PacketType.ObjectUpdateCompressed); |
@@ -4421,7 +4421,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4421 | 4421 | ||
4422 | OutPacket(packet, ThrottleOutPacketType.Task, true, delegate(OutgoingPacket oPacket) { ResendPrimUpdates(compressedUpdates.Value, oPacket); }); | 4422 | OutPacket(packet, ThrottleOutPacketType.Task, true, delegate(OutgoingPacket oPacket) { ResendPrimUpdates(compressedUpdates.Value, oPacket); }); |
4423 | } | 4423 | } |
4424 | 4424 | ||
4425 | if (terseUpdateBlocks.Count > 0) | 4425 | if (terseUpdateBlocks.Count > 0) |
4426 | { | 4426 | { |
4427 | ImprovedTerseObjectUpdatePacket packet | 4427 | ImprovedTerseObjectUpdatePacket packet |
@@ -4430,7 +4430,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4430 | packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; | 4430 | packet.RegionData.RegionHandle = m_scene.RegionInfo.RegionHandle; |
4431 | packet.RegionData.TimeDilation = timeDilation; | 4431 | packet.RegionData.TimeDilation = timeDilation; |
4432 | packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[terseUpdateBlocks.Count]; | 4432 | packet.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[terseUpdateBlocks.Count]; |
4433 | 4433 | ||
4434 | for (int i = 0; i < terseUpdateBlocks.Count; i++) | 4434 | for (int i = 0; i < terseUpdateBlocks.Count; i++) |
4435 | packet.ObjectData[i] = terseUpdateBlocks[i]; | 4435 | packet.ObjectData[i] = terseUpdateBlocks[i]; |
4436 | 4436 | ||
@@ -4484,11 +4484,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4484 | } | 4484 | } |
4485 | 4485 | ||
4486 | // m_log.DebugFormat( | 4486 | // m_log.DebugFormat( |
4487 | // "[LLCLIENTVIEW]: Sent {0} updates in ProcessEntityUpdates() for {1} {2} in {3}", | 4487 | // "[LLCLIENTVIEW]: Sent {0} updates in ProcessEntityUpdates() for {1} {2} in {3}", |
4488 | // updatesThisCall, Name, SceneAgent.IsChildAgent ? "child" : "root", Scene.Name); | 4488 | // updatesThisCall, Name, SceneAgent.IsChildAgent ? "child" : "root", Scene.Name); |
4489 | // | 4489 | // |
4490 | } | 4490 | } |
4491 | 4491 | ||
4492 | public void ReprioritizeUpdates() | 4492 | public void ReprioritizeUpdates() |
4493 | { | 4493 | { |
4494 | lock (m_entityUpdates.SyncRoot) | 4494 | lock (m_entityUpdates.SyncRoot) |
@@ -4600,7 +4600,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4600 | foreach(SceneObjectPart p in grp.Parts) | 4600 | foreach(SceneObjectPart p in grp.Parts) |
4601 | SendEntityUpdate(p,PrimUpdateFlags.CancelKill); | 4601 | SendEntityUpdate(p,PrimUpdateFlags.CancelKill); |
4602 | } | 4602 | } |
4603 | } | 4603 | } |
4604 | 4604 | ||
4605 | CheckGroupsInViewBusy = false; | 4605 | CheckGroupsInViewBusy = false; |
4606 | } | 4606 | } |
@@ -4640,8 +4640,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4640 | 4640 | ||
4641 | if ((categories & ThrottleOutPacketTypeFlags.Task) != 0) | 4641 | if ((categories & ThrottleOutPacketTypeFlags.Task) != 0) |
4642 | { | 4642 | { |
4643 | int maxUpdateBytes = m_udpClient.GetCatBytesCanSend(ThrottleOutPacketType.Task, 30); | 4643 | int maxUpdateBytes = m_udpClient.GetCatBytesCanSend(ThrottleOutPacketType.Task, 30); |
4644 | 4644 | ||
4645 | if (m_entityUpdates.Count > 0) | 4645 | if (m_entityUpdates.Count > 0) |
4646 | ProcessEntityUpdates(maxUpdateBytes); | 4646 | ProcessEntityUpdates(maxUpdateBytes); |
4647 | 4647 | ||
@@ -4660,7 +4660,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4660 | if (m_entityUpdates.Count > 0) | 4660 | if (m_entityUpdates.Count > 0) |
4661 | return true; | 4661 | return true; |
4662 | if (m_entityProps.Count > 0) | 4662 | if (m_entityProps.Count > 0) |
4663 | return true; | 4663 | return true; |
4664 | } | 4664 | } |
4665 | 4665 | ||
4666 | if ((categories & ThrottleOutPacketTypeFlags.Texture) != 0) | 4666 | if ((categories & ThrottleOutPacketTypeFlags.Texture) != 0) |
@@ -4775,7 +4775,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4775 | { | 4775 | { |
4776 | internal bool SendFamilyProps; | 4776 | internal bool SendFamilyProps; |
4777 | internal bool SendObjectProps; | 4777 | internal bool SendObjectProps; |
4778 | 4778 | ||
4779 | public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam, bool sendobj) | 4779 | public ObjectPropertyUpdate(ISceneEntity entity, uint flags, bool sendfam, bool sendobj) |
4780 | : base(entity,(PrimUpdateFlags)flags) | 4780 | : base(entity,(PrimUpdateFlags)flags) |
4781 | { | 4781 | { |
@@ -4790,7 +4790,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4790 | base.Update(update); | 4790 | base.Update(update); |
4791 | } | 4791 | } |
4792 | } | 4792 | } |
4793 | 4793 | ||
4794 | public void SendObjectPropertiesFamilyData(ISceneEntity entity, uint requestFlags) | 4794 | public void SendObjectPropertiesFamilyData(ISceneEntity entity, uint requestFlags) |
4795 | { | 4795 | { |
4796 | uint priority = 0; // time based ordering only | 4796 | uint priority = 0; // time based ordering only |
@@ -4824,7 +4824,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4824 | foreach (ObjectPropertyUpdate update in updates) | 4824 | foreach (ObjectPropertyUpdate update in updates) |
4825 | ResendPropertyUpdate(update); | 4825 | ResendPropertyUpdate(update); |
4826 | } | 4826 | } |
4827 | 4827 | ||
4828 | public void SendObjectPropertiesReply(ISceneEntity entity) | 4828 | public void SendObjectPropertiesReply(ISceneEntity entity) |
4829 | { | 4829 | { |
4830 | uint priority = 0; // time based ordering only | 4830 | uint priority = 0; // time based ordering only |
@@ -4845,8 +4845,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4845 | 4845 | ||
4846 | // OpenSim.Framework.Lazy<List<ObjectPropertyUpdate>> propertyUpdates = | 4846 | // OpenSim.Framework.Lazy<List<ObjectPropertyUpdate>> propertyUpdates = |
4847 | // new OpenSim.Framework.Lazy<List<ObjectPropertyUpdate>>(); | 4847 | // new OpenSim.Framework.Lazy<List<ObjectPropertyUpdate>>(); |
4848 | 4848 | ||
4849 | 4849 | ||
4850 | EntityUpdate iupdate; | 4850 | EntityUpdate iupdate; |
4851 | Int32 timeinqueue; // this is just debugging code & can be dropped later | 4851 | Int32 timeinqueue; // this is just debugging code & can be dropped later |
4852 | 4852 | ||
@@ -4882,7 +4882,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4882 | } | 4882 | } |
4883 | } | 4883 | } |
4884 | } | 4884 | } |
4885 | 4885 | ||
4886 | if (objectPropertiesBlocks.Count > 0) | 4886 | if (objectPropertiesBlocks.Count > 0) |
4887 | { | 4887 | { |
4888 | ObjectPropertiesPacket packet = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); | 4888 | ObjectPropertiesPacket packet = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); |
@@ -4890,7 +4890,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4890 | for (int i = 0; i < objectPropertiesBlocks.Count; i++) | 4890 | for (int i = 0; i < objectPropertiesBlocks.Count; i++) |
4891 | packet.ObjectData[i] = objectPropertiesBlocks[i]; | 4891 | packet.ObjectData[i] = objectPropertiesBlocks[i]; |
4892 | 4892 | ||
4893 | 4893 | ||
4894 | objectPropertiesBlocks.Clear(); | 4894 | objectPropertiesBlocks.Clear(); |
4895 | packet.Header.Zerocoded = true; | 4895 | packet.Header.Zerocoded = true; |
4896 | 4896 | ||
@@ -4907,12 +4907,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4907 | // pbcnt += blocks.Count; | 4907 | // pbcnt += blocks.Count; |
4908 | // ppcnt++; | 4908 | // ppcnt++; |
4909 | } | 4909 | } |
4910 | 4910 | ||
4911 | // Int32 fpcnt = 0; | 4911 | // Int32 fpcnt = 0; |
4912 | // Int32 fbcnt = 0; | 4912 | // Int32 fbcnt = 0; |
4913 | 4913 | ||
4914 | if (objectFamilyBlocks.Count > 0) | 4914 | if (objectFamilyBlocks.Count > 0) |
4915 | { | 4915 | { |
4916 | // one packet per object block... uggh... | 4916 | // one packet per object block... uggh... |
4917 | for (int i = 0; i < objectFamilyBlocks.Count; i++) | 4917 | for (int i = 0; i < objectFamilyBlocks.Count; i++) |
4918 | { | 4918 | { |
@@ -4965,7 +4965,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4965 | } | 4965 | } |
4966 | needPhysics.Clear(); | 4966 | needPhysics.Clear(); |
4967 | } | 4967 | } |
4968 | 4968 | ||
4969 | // m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); | 4969 | // m_log.WarnFormat("[PACKETCOUNTS] queued {0} property packets with {1} blocks",ppcnt,pbcnt); |
4970 | // m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); | 4970 | // m_log.WarnFormat("[PACKETCOUNTS] queued {0} family property packets with {1} blocks",fpcnt,fbcnt); |
4971 | } | 4971 | } |
@@ -4998,7 +4998,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4998 | 4998 | ||
4999 | return block; | 4999 | return block; |
5000 | } | 5000 | } |
5001 | 5001 | ||
5002 | private ObjectPropertiesPacket.ObjectDataBlock CreateObjectPropertiesBlock(SceneObjectPart sop) | 5002 | private ObjectPropertiesPacket.ObjectDataBlock CreateObjectPropertiesBlock(SceneObjectPart sop) |
5003 | { | 5003 | { |
5004 | //ObjectPropertiesPacket proper = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); | 5004 | //ObjectPropertiesPacket proper = (ObjectPropertiesPacket)PacketPool.Instance.GetPacket(PacketType.ObjectProperties); |
@@ -5024,7 +5024,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5024 | block.FolderID = UUID.Zero; // sog.FromFolderID ?? | 5024 | block.FolderID = UUID.Zero; // sog.FromFolderID ?? |
5025 | block.FromTaskID = UUID.Zero; // ??? | 5025 | block.FromTaskID = UUID.Zero; // ??? |
5026 | block.InventorySerial = (short)sop.InventorySerial; | 5026 | block.InventorySerial = (short)sop.InventorySerial; |
5027 | 5027 | ||
5028 | SceneObjectPart root = sop.ParentGroup.RootPart; | 5028 | SceneObjectPart root = sop.ParentGroup.RootPart; |
5029 | 5029 | ||
5030 | block.TouchName = Util.StringToBytes256(root.TouchName); | 5030 | block.TouchName = Util.StringToBytes256(root.TouchName); |
@@ -5036,7 +5036,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5036 | // { | 5036 | // { |
5037 | // using (BinaryWriter binWriter = new BinaryWriter(memStream)) | 5037 | // using (BinaryWriter binWriter = new BinaryWriter(memStream)) |
5038 | // { | 5038 | // { |
5039 | // for (int i = 0; i < sop.GetNumberOfSides(); i++) | 5039 | // for (int i = 0; i < sop.GetNumberOfSides(); i++) |
5040 | // { | 5040 | // { |
5041 | // Primitive.TextureEntryFace teFace = sop.Shape.Textures.FaceTextures[i]; | 5041 | // Primitive.TextureEntryFace teFace = sop.Shape.Textures.FaceTextures[i]; |
5042 | // | 5042 | // |
@@ -5053,7 +5053,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5053 | // block.TextureID = memStream.ToArray(); | 5053 | // block.TextureID = memStream.ToArray(); |
5054 | // } | 5054 | // } |
5055 | // } | 5055 | // } |
5056 | 5056 | ||
5057 | block.TextureID = new byte[0]; // TextureID ??? | 5057 | block.TextureID = new byte[0]; // TextureID ??? |
5058 | block.SitName = Util.StringToBytes256(root.SitName); | 5058 | block.SitName = Util.StringToBytes256(root.SitName); |
5059 | block.OwnerMask = root.OwnerMask; | 5059 | block.OwnerMask = root.OwnerMask; |
@@ -5202,7 +5202,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5202 | public void SendEstateCovenantInformation(UUID covenant) | 5202 | public void SendEstateCovenantInformation(UUID covenant) |
5203 | { | 5203 | { |
5204 | // m_log.DebugFormat("[LLCLIENTVIEW]: Sending estate covenant asset id of {0} to {1}", covenant, Name); | 5204 | // m_log.DebugFormat("[LLCLIENTVIEW]: Sending estate covenant asset id of {0} to {1}", covenant, Name); |
5205 | 5205 | ||
5206 | EstateCovenantReplyPacket einfopack = new EstateCovenantReplyPacket(); | 5206 | EstateCovenantReplyPacket einfopack = new EstateCovenantReplyPacket(); |
5207 | EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock(); | 5207 | EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock(); |
5208 | edata.CovenantID = covenant; | 5208 | edata.CovenantID = covenant; |
@@ -5219,7 +5219,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5219 | { | 5219 | { |
5220 | // m_log.DebugFormat( | 5220 | // m_log.DebugFormat( |
5221 | // "[LLCLIENTVIEW]: Sending detailed estate data to {0} with covenant asset id {1}", Name, covenant); | 5221 | // "[LLCLIENTVIEW]: Sending detailed estate data to {0} with covenant asset id {1}", Name, covenant); |
5222 | 5222 | ||
5223 | EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); | 5223 | EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); |
5224 | packet.MethodData.Invoice = invoice; | 5224 | packet.MethodData.Invoice = invoice; |
5225 | packet.AgentData.TransactionID = UUID.Random(); | 5225 | packet.AgentData.TransactionID = UUID.Random(); |
@@ -5282,13 +5282,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5282 | } | 5282 | } |
5283 | 5283 | ||
5284 | public void SendLandProperties( | 5284 | public void SendLandProperties( |
5285 | int sequence_id, bool snap_selection, int request_result, ILandObject lo, | 5285 | int sequence_id, bool snap_selection, int request_result, ILandObject lo, |
5286 | float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) | 5286 | float simObjectBonusFactor, int parcelObjectCapacity, int simObjectCapacity, uint regionFlags) |
5287 | { | 5287 | { |
5288 | // m_log.DebugFormat("[LLCLIENTVIEW]: Sending land properties for {0} to {1}", lo.LandData.GlobalID, Name); | 5288 | // m_log.DebugFormat("[LLCLIENTVIEW]: Sending land properties for {0} to {1}", lo.LandData.GlobalID, Name); |
5289 | 5289 | ||
5290 | LandData landData = lo.LandData; | 5290 | LandData landData = lo.LandData; |
5291 | 5291 | ||
5292 | ParcelPropertiesMessage updateMessage = new ParcelPropertiesMessage(); | 5292 | ParcelPropertiesMessage updateMessage = new ParcelPropertiesMessage(); |
5293 | 5293 | ||
5294 | updateMessage.AABBMax = landData.AABBMax; | 5294 | updateMessage.AABBMax = landData.AABBMax; |
@@ -5301,7 +5301,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5301 | updateMessage.Category = landData.Category; | 5301 | updateMessage.Category = landData.Category; |
5302 | updateMessage.ClaimDate = Util.ToDateTime(landData.ClaimDate); | 5302 | updateMessage.ClaimDate = Util.ToDateTime(landData.ClaimDate); |
5303 | updateMessage.ClaimPrice = landData.ClaimPrice; | 5303 | updateMessage.ClaimPrice = landData.ClaimPrice; |
5304 | updateMessage.GroupID = landData.GroupID; | 5304 | updateMessage.GroupID = landData.GroupID; |
5305 | updateMessage.IsGroupOwned = landData.IsGroupOwned; | 5305 | updateMessage.IsGroupOwned = landData.IsGroupOwned; |
5306 | updateMessage.LandingType = (LandingType) landData.LandingType; | 5306 | updateMessage.LandingType = (LandingType) landData.LandingType; |
5307 | updateMessage.LocalID = landData.LocalID; | 5307 | updateMessage.LocalID = landData.LocalID; |
@@ -5322,7 +5322,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5322 | updateMessage.Name = landData.Name; | 5322 | updateMessage.Name = landData.Name; |
5323 | updateMessage.OtherCleanTime = landData.OtherCleanTime; | 5323 | updateMessage.OtherCleanTime = landData.OtherCleanTime; |
5324 | updateMessage.OtherCount = 0; //TODO: Unimplemented | 5324 | updateMessage.OtherCount = 0; //TODO: Unimplemented |
5325 | updateMessage.OwnerID = landData.OwnerID; | 5325 | updateMessage.OwnerID = landData.OwnerID; |
5326 | updateMessage.ParcelFlags = (ParcelFlags) landData.Flags; | 5326 | updateMessage.ParcelFlags = (ParcelFlags) landData.Flags; |
5327 | updateMessage.ParcelPrimBonus = simObjectBonusFactor; | 5327 | updateMessage.ParcelPrimBonus = simObjectBonusFactor; |
5328 | updateMessage.PassHours = landData.PassHours; | 5328 | updateMessage.PassHours = landData.PassHours; |
@@ -5337,10 +5337,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5337 | 5337 | ||
5338 | updateMessage.RentPrice = 0; | 5338 | updateMessage.RentPrice = 0; |
5339 | updateMessage.RequestResult = (ParcelResult) request_result; | 5339 | updateMessage.RequestResult = (ParcelResult) request_result; |
5340 | updateMessage.SalePrice = landData.SalePrice; | 5340 | updateMessage.SalePrice = landData.SalePrice; |
5341 | updateMessage.SelfCount = 0; //TODO: Unimplemented | 5341 | updateMessage.SelfCount = 0; //TODO: Unimplemented |
5342 | updateMessage.SequenceID = sequence_id; | 5342 | updateMessage.SequenceID = sequence_id; |
5343 | 5343 | ||
5344 | if (landData.SimwideArea > 0) | 5344 | if (landData.SimwideArea > 0) |
5345 | { | 5345 | { |
5346 | updateMessage.SimWideMaxPrims = lo.GetSimulatorMaxPrimCount(); | 5346 | updateMessage.SimWideMaxPrims = lo.GetSimulatorMaxPrimCount(); |
@@ -5349,7 +5349,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5349 | { | 5349 | { |
5350 | updateMessage.SimWideMaxPrims = 0; | 5350 | updateMessage.SimWideMaxPrims = 0; |
5351 | } | 5351 | } |
5352 | 5352 | ||
5353 | updateMessage.SnapSelection = snap_selection; | 5353 | updateMessage.SnapSelection = snap_selection; |
5354 | updateMessage.SnapshotID = landData.SnapshotID; | 5354 | updateMessage.SnapshotID = landData.SnapshotID; |
5355 | updateMessage.Status = (ParcelStatus) landData.Status; | 5355 | updateMessage.Status = (ParcelStatus) landData.Status; |
@@ -5367,11 +5367,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5367 | updateMessage.SeeAVs = landData.SeeAVs; | 5367 | updateMessage.SeeAVs = landData.SeeAVs; |
5368 | updateMessage.AnyAVSounds = landData.AnyAVSounds; | 5368 | updateMessage.AnyAVSounds = landData.AnyAVSounds; |
5369 | updateMessage.GroupAVSounds = landData.GroupAVSounds; | 5369 | updateMessage.GroupAVSounds = landData.GroupAVSounds; |
5370 | 5370 | ||
5371 | IPrimCounts pc = lo.PrimCounts; | 5371 | IPrimCounts pc = lo.PrimCounts; |
5372 | updateMessage.OwnerPrims = pc.Owner; | 5372 | updateMessage.OwnerPrims = pc.Owner; |
5373 | updateMessage.GroupPrims = pc.Group; | 5373 | updateMessage.GroupPrims = pc.Group; |
5374 | updateMessage.OtherPrims = pc.Others; | 5374 | updateMessage.OtherPrims = pc.Others; |
5375 | updateMessage.SelectedPrims = pc.Selected; | 5375 | updateMessage.SelectedPrims = pc.Selected; |
5376 | updateMessage.TotalPrims = pc.Total; | 5376 | updateMessage.TotalPrims = pc.Total; |
5377 | updateMessage.SimWideTotalPrims = pc.Simulator; | 5377 | updateMessage.SimWideTotalPrims = pc.Simulator; |
@@ -5384,8 +5384,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5384 | if (eq != null) | 5384 | if (eq != null) |
5385 | { | 5385 | { |
5386 | eq.ParcelProperties(updateMessage, this.AgentId); | 5386 | eq.ParcelProperties(updateMessage, this.AgentId); |
5387 | } | 5387 | } |
5388 | else | 5388 | else |
5389 | { | 5389 | { |
5390 | m_log.Warn("[LLCLIENTVIEW]: No EQ Interface when sending parcel data."); | 5390 | m_log.Warn("[LLCLIENTVIEW]: No EQ Interface when sending parcel data."); |
5391 | } | 5391 | } |
@@ -5422,7 +5422,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5422 | public void SendForceClientSelectObjects(List<uint> ObjectIDs) | 5422 | public void SendForceClientSelectObjects(List<uint> ObjectIDs) |
5423 | { | 5423 | { |
5424 | // m_log.DebugFormat("[LLCLIENTVIEW] sending select with {0} objects", ObjectIDs.Count); | 5424 | // m_log.DebugFormat("[LLCLIENTVIEW] sending select with {0} objects", ObjectIDs.Count); |
5425 | 5425 | ||
5426 | bool firstCall = true; | 5426 | bool firstCall = true; |
5427 | const int MAX_OBJECTS_PER_PACKET = 251; | 5427 | const int MAX_OBJECTS_PER_PACKET = 251; |
5428 | ForceObjectSelectPacket pack = (ForceObjectSelectPacket)PacketPool.Instance.GetPacket(PacketType.ForceObjectSelect); | 5428 | ForceObjectSelectPacket pack = (ForceObjectSelectPacket)PacketPool.Instance.GetPacket(PacketType.ForceObjectSelect); |
@@ -5634,7 +5634,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5634 | 5634 | ||
5635 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock block | 5635 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock block |
5636 | = PacketPool.Instance.GetDataBlock<ImprovedTerseObjectUpdatePacket.ObjectDataBlock>(); | 5636 | = PacketPool.Instance.GetDataBlock<ImprovedTerseObjectUpdatePacket.ObjectDataBlock>(); |
5637 | 5637 | ||
5638 | block.Data = data; | 5638 | block.Data = data; |
5639 | 5639 | ||
5640 | if (textureEntry != null && textureEntry.Length > 0) | 5640 | if (textureEntry != null && textureEntry.Length > 0) |
@@ -5661,7 +5661,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5661 | Vector3 offsetPosition = data.OffsetPosition; | 5661 | Vector3 offsetPosition = data.OffsetPosition; |
5662 | Quaternion rotation = data.Rotation; | 5662 | Quaternion rotation = data.Rotation; |
5663 | uint parentID = data.ParentID; | 5663 | uint parentID = data.ParentID; |
5664 | 5664 | ||
5665 | // m_log.DebugFormat( | 5665 | // m_log.DebugFormat( |
5666 | // "[LLCLIENTVIEW]: Sending full update to {0} with pos {1}, vel {2} in {3}", Name, data.OffsetPosition, data.Velocity, m_scene.Name); | 5666 | // "[LLCLIENTVIEW]: Sending full update to {0} with pos {1}, vel {2} in {3}", Name, data.OffsetPosition, data.Velocity, m_scene.Name); |
5667 | 5667 | ||
@@ -5752,7 +5752,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5752 | /* | 5752 | /* |
5753 | if (data.ParentGroup.IsAttachment) | 5753 | if (data.ParentGroup.IsAttachment) |
5754 | { | 5754 | { |
5755 | update.NameValue | 5755 | update.NameValue |
5756 | = Util.StringToBytes256( | 5756 | = Util.StringToBytes256( |
5757 | string.Format("AttachItemID STRING RW SV {0}", data.ParentGroup.FromItemID)); | 5757 | string.Format("AttachItemID STRING RW SV {0}", data.ParentGroup.FromItemID)); |
5758 | 5758 | ||
@@ -5906,7 +5906,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5906 | { | 5906 | { |
5907 | m_groupPowers.Clear(); | 5907 | m_groupPowers.Clear(); |
5908 | m_groupPowers = powers; | 5908 | m_groupPowers = powers; |
5909 | } | 5909 | } |
5910 | } | 5910 | } |
5911 | 5911 | ||
5912 | public ulong GetGroupPowers(UUID groupID) | 5912 | public ulong GetGroupPowers(UUID groupID) |
@@ -6193,7 +6193,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6193 | { | 6193 | { |
6194 | if( | 6194 | if( |
6195 | (x.ControlFlags != m_thisAgentUpdateArgs.ControlFlags) // significant if control flags changed | 6195 | (x.ControlFlags != m_thisAgentUpdateArgs.ControlFlags) // significant if control flags changed |
6196 | // || ((x.ControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0 && | 6196 | // || ((x.ControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0 && |
6197 | // (x.ControlFlags & 0x3f8dfff) != 0) // we need to rotate the av on fly | 6197 | // (x.ControlFlags & 0x3f8dfff) != 0) // we need to rotate the av on fly |
6198 | || x.ControlFlags != (byte)AgentManager.ControlFlags.NONE// actually all movement controls need to pass | 6198 | || x.ControlFlags != (byte)AgentManager.ControlFlags.NONE// actually all movement controls need to pass |
6199 | || (x.Flags != m_thisAgentUpdateArgs.Flags) // significant if Flags changed | 6199 | || (x.Flags != m_thisAgentUpdateArgs.Flags) // significant if Flags changed |
@@ -6208,7 +6208,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6208 | if( | 6208 | if( |
6209 | qdelta1 < QDELTABody // significant if body rotation above(below cos) threshold | 6209 | qdelta1 < QDELTABody // significant if body rotation above(below cos) threshold |
6210 | // Ignoring head rotation altogether, because it's not being used for anything interesting up the stack | 6210 | // Ignoring head rotation altogether, because it's not being used for anything interesting up the stack |
6211 | // || qdelta2 < QDELTAHead // significant if head rotation above(below cos) threshold | 6211 | // || qdelta2 < QDELTAHead // significant if head rotation above(below cos) threshold |
6212 | ) | 6212 | ) |
6213 | return true; | 6213 | return true; |
6214 | 6214 | ||
@@ -6257,7 +6257,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6257 | 6257 | ||
6258 | TotalAgentUpdates++; | 6258 | TotalAgentUpdates++; |
6259 | // dont let ignored updates pollute this throttles | 6259 | // dont let ignored updates pollute this throttles |
6260 | if(SceneAgent == null || SceneAgent.IsChildAgent || | 6260 | if(SceneAgent == null || SceneAgent.IsChildAgent || |
6261 | SceneAgent.IsInTransit || seq <= m_thisAgentUpdateArgs.lastpacketSequence ) | 6261 | SceneAgent.IsInTransit || seq <= m_thisAgentUpdateArgs.lastpacketSequence ) |
6262 | { | 6262 | { |
6263 | // throttle reset is done at MoveAgentIntoRegion() | 6263 | // throttle reset is done at MoveAgentIntoRegion() |
@@ -6476,7 +6476,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6476 | } | 6476 | } |
6477 | } | 6477 | } |
6478 | } | 6478 | } |
6479 | 6479 | ||
6480 | //m_log.Debug("[LLCLIENTVIEW]: Not handling GenericMessage with method-type of: " + method); | 6480 | //m_log.Debug("[LLCLIENTVIEW]: Not handling GenericMessage with method-type of: " + method); |
6481 | return false; | 6481 | return false; |
6482 | } | 6482 | } |
@@ -6922,7 +6922,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6922 | //m_log.Info("[LAND]: LAND:" + modify.ToString()); | 6922 | //m_log.Info("[LAND]: LAND:" + modify.ToString()); |
6923 | if (modify.ParcelData.Length > 0) | 6923 | if (modify.ParcelData.Length > 0) |
6924 | { | 6924 | { |
6925 | // Note: the ModifyTerrain event handler sends out updated packets before the end of this event. Therefore, | 6925 | // Note: the ModifyTerrain event handler sends out updated packets before the end of this event. Therefore, |
6926 | // a simple boolean value should work and perhaps queue up just a few terrain patch packets at the end of the edit. | 6926 | // a simple boolean value should work and perhaps queue up just a few terrain patch packets at the end of the edit. |
6927 | if (OnModifyTerrain != null) | 6927 | if (OnModifyTerrain != null) |
6928 | { | 6928 | { |
@@ -6999,20 +6999,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
6999 | byte[] visualparams = new byte[appear.VisualParam.Length]; | 6999 | byte[] visualparams = new byte[appear.VisualParam.Length]; |
7000 | for (int i = 0; i < appear.VisualParam.Length; i++) | 7000 | for (int i = 0; i < appear.VisualParam.Length; i++) |
7001 | visualparams[i] = appear.VisualParam[i].ParamValue; | 7001 | visualparams[i] = appear.VisualParam[i].ParamValue; |
7002 | //var b = appear.WearableData[0]; | 7002 | //var b = appear.WearableData[0]; |
7003 | 7003 | ||
7004 | Primitive.TextureEntry te = null; | 7004 | Primitive.TextureEntry te = null; |
7005 | if (appear.ObjectData.TextureEntry.Length > 1) | 7005 | if (appear.ObjectData.TextureEntry.Length > 1) |
7006 | te = new Primitive.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length); | 7006 | te = new Primitive.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length); |
7007 | 7007 | ||
7008 | WearableCacheItem[] cacheitems = new WearableCacheItem[appear.WearableData.Length]; | 7008 | WearableCacheItem[] cacheitems = new WearableCacheItem[appear.WearableData.Length]; |
7009 | for (int i=0; i<appear.WearableData.Length;i++) | 7009 | for (int i=0; i<appear.WearableData.Length;i++) |
7010 | cacheitems[i] = new WearableCacheItem(){ | 7010 | cacheitems[i] = new WearableCacheItem(){ |
7011 | CacheId = appear.WearableData[i].CacheID, | 7011 | CacheId = appear.WearableData[i].CacheID, |
7012 | TextureIndex=Convert.ToUInt32(appear.WearableData[i].TextureIndex) | 7012 | TextureIndex=Convert.ToUInt32(appear.WearableData[i].TextureIndex) |
7013 | }; | 7013 | }; |
7014 | 7014 | ||
7015 | 7015 | ||
7016 | 7016 | ||
7017 | handlerSetAppearance(sender, te, visualparams,avSize, cacheitems); | 7017 | handlerSetAppearance(sender, te, visualparams,avSize, cacheitems); |
7018 | } | 7018 | } |
@@ -7970,7 +7970,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
7970 | physdata.Bounce = phsblock.Restitution; | 7970 | physdata.Bounce = phsblock.Restitution; |
7971 | physdata.Density = phsblock.Density; | 7971 | physdata.Density = phsblock.Density; |
7972 | physdata.Friction = phsblock.Friction; | 7972 | physdata.Friction = phsblock.Friction; |
7973 | physdata.GravitationModifier = phsblock.GravityMultiplier; | 7973 | physdata.GravitationModifier = phsblock.GravityMultiplier; |
7974 | } | 7974 | } |
7975 | 7975 | ||
7976 | handlerUpdatePrimFlags(flags.AgentData.ObjectLocalID, UsePhysics, IsTemporary, IsPhantom, physdata, this); | 7976 | handlerUpdatePrimFlags(flags.AgentData.ObjectLocalID, UsePhysics, IsTemporary, IsPhantom, physdata, this); |
@@ -8381,7 +8381,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8381 | handlerObjectDuplicateOnRay = OnObjectDuplicateOnRay; | 8381 | handlerObjectDuplicateOnRay = OnObjectDuplicateOnRay; |
8382 | if (handlerObjectDuplicateOnRay != null) | 8382 | if (handlerObjectDuplicateOnRay != null) |
8383 | { | 8383 | { |
8384 | 8384 | ||
8385 | UUID rezGroupID = dupeOnRay.AgentData.GroupID; | 8385 | UUID rezGroupID = dupeOnRay.AgentData.GroupID; |
8386 | if(!IsGroupMember(rezGroupID)) | 8386 | if(!IsGroupMember(rezGroupID)) |
8387 | rezGroupID = UUID.Zero; | 8387 | rezGroupID = UUID.Zero; |
@@ -10198,7 +10198,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10198 | if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false)) | 10198 | if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false)) |
10199 | { | 10199 | { |
10200 | int estateAccessType = Convert.ToInt16(Utils.BytesToString(messagePacket.ParamList[1].Parameter)); | 10200 | int estateAccessType = Convert.ToInt16(Utils.BytesToString(messagePacket.ParamList[1].Parameter)); |
10201 | 10201 | ||
10202 | OnUpdateEstateAccessDeltaRequest(this, messagePacket.MethodData.Invoice, estateAccessType, new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter))); | 10202 | OnUpdateEstateAccessDeltaRequest(this, messagePacket.MethodData.Invoice, estateAccessType, new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter))); |
10203 | 10203 | ||
10204 | } | 10204 | } |
@@ -10234,7 +10234,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10234 | Message = Utils.BytesToString(messagePacket.ParamList[1].Parameter); | 10234 | Message = Utils.BytesToString(messagePacket.ParamList[1].Parameter); |
10235 | } | 10235 | } |
10236 | else | 10236 | else |
10237 | { | 10237 | { |
10238 | SenderID = new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter)); | 10238 | SenderID = new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter)); |
10239 | SenderName = Utils.BytesToString(messagePacket.ParamList[3].Parameter); | 10239 | SenderName = Utils.BytesToString(messagePacket.ParamList[3].Parameter); |
10240 | Message = Utils.BytesToString(messagePacket.ParamList[4].Parameter); | 10240 | Message = Utils.BytesToString(messagePacket.ParamList[4].Parameter); |
@@ -10376,7 +10376,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10376 | return true; | 10376 | return true; |
10377 | 10377 | ||
10378 | case "kickestate": | 10378 | case "kickestate": |
10379 | 10379 | ||
10380 | if(((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false)) | 10380 | if(((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false)) |
10381 | { | 10381 | { |
10382 | UUID invoice = messagePacket.MethodData.Invoice; | 10382 | UUID invoice = messagePacket.MethodData.Invoice; |
@@ -10459,7 +10459,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10459 | if (rglpPack.AgentData.SessionID != SessionId || | 10459 | if (rglpPack.AgentData.SessionID != SessionId || |
10460 | rglpPack.AgentData.AgentID != AgentId) | 10460 | rglpPack.AgentData.AgentID != AgentId) |
10461 | return true; | 10461 | return true; |
10462 | 10462 | ||
10463 | RequestGodlikePowersPacket.RequestBlockBlock rblock = rglpPack.RequestBlock; | 10463 | RequestGodlikePowersPacket.RequestBlockBlock rblock = rglpPack.RequestBlock; |
10464 | UUID token = rblock.Token; | 10464 | UUID token = rblock.Token; |
10465 | 10465 | ||
@@ -10975,7 +10975,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
10975 | { | 10975 | { |
10976 | return true; | 10976 | return true; |
10977 | } | 10977 | } |
10978 | 10978 | ||
10979 | private bool HandleCreateNewOutfitAttachments(IClientAPI sender, Packet Pack) | 10979 | private bool HandleCreateNewOutfitAttachments(IClientAPI sender, Packet Pack) |
10980 | { | 10980 | { |
10981 | CreateNewOutfitAttachmentsPacket packet = (CreateNewOutfitAttachmentsPacket)Pack; | 10981 | CreateNewOutfitAttachmentsPacket packet = (CreateNewOutfitAttachmentsPacket)Pack; |
@@ -11012,7 +11012,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11012 | return true; | 11012 | return true; |
11013 | } | 11013 | } |
11014 | 11014 | ||
11015 | 11015 | ||
11016 | private bool HandleInventoryDescendents(IClientAPI sender, Packet Pack) | 11016 | private bool HandleInventoryDescendents(IClientAPI sender, Packet Pack) |
11017 | { | 11017 | { |
11018 | return true; | 11018 | return true; |
@@ -11402,7 +11402,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11402 | GroupProfileRequestPacket groupProfileRequest = | 11402 | GroupProfileRequestPacket groupProfileRequest = |
11403 | (GroupProfileRequestPacket)Pack; | 11403 | (GroupProfileRequestPacket)Pack; |
11404 | 11404 | ||
11405 | 11405 | ||
11406 | #region Packet Session and User Check | 11406 | #region Packet Session and User Check |
11407 | if (m_checkPackets) | 11407 | if (m_checkPackets) |
11408 | { | 11408 | { |
@@ -11464,7 +11464,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11464 | } | 11464 | } |
11465 | 11465 | ||
11466 | OutPacket(groupProfileReply, ThrottleOutPacketType.Task); | 11466 | OutPacket(groupProfileReply, ThrottleOutPacketType.Task); |
11467 | 11467 | ||
11468 | if(grpID == lastGroupProfileRequestID) | 11468 | if(grpID == lastGroupProfileRequestID) |
11469 | lastGroupProfileRequestTS = Util.GetTimeStampMS() - 7000; | 11469 | lastGroupProfileRequestTS = Util.GetTimeStampMS() - 7000; |
11470 | 11470 | ||
@@ -12398,10 +12398,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
12398 | ScenePresence sp = (ScenePresence)SceneAgent; | 12398 | ScenePresence sp = (ScenePresence)SceneAgent; |
12399 | if(sp != null && !sp.IsDeleted && !sp.IsInTransit) | 12399 | if(sp != null && !sp.IsDeleted && !sp.IsInTransit) |
12400 | { | 12400 | { |
12401 | UUID objectID = pkt.Data.ObjectID; | 12401 | UUID objectID = pkt.Data.ObjectID; |
12402 | uint permissions = pkt.Data.ObjectPermissions; | 12402 | uint permissions = pkt.Data.ObjectPermissions; |
12403 | 12403 | ||
12404 | sp.HandleRevokePermissions(objectID , permissions); | 12404 | sp.HandleRevokePermissions(objectID , permissions); |
12405 | } | 12405 | } |
12406 | return true; | 12406 | return true; |
12407 | } | 12407 | } |
@@ -12437,7 +12437,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
12437 | scriptQuestion.Data.Questions = question; | 12437 | scriptQuestion.Data.Questions = question; |
12438 | scriptQuestion.Data.ObjectName = Util.StringToBytes256(taskName); | 12438 | scriptQuestion.Data.ObjectName = Util.StringToBytes256(taskName); |
12439 | scriptQuestion.Data.ObjectOwner = Util.StringToBytes256(ownerName); | 12439 | scriptQuestion.Data.ObjectOwner = Util.StringToBytes256(ownerName); |
12440 | 12440 | ||
12441 | OutPacket(scriptQuestion, ThrottleOutPacketType.Task); | 12441 | OutPacket(scriptQuestion, ThrottleOutPacketType.Task); |
12442 | } | 12442 | } |
12443 | 12443 | ||
@@ -12629,7 +12629,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
12629 | * 0x01 position | 12629 | * 0x01 position |
12630 | * 0x02 rotation | 12630 | * 0x02 rotation |
12631 | * 0x04 scale | 12631 | * 0x04 scale |
12632 | 12632 | ||
12633 | * 0x08 LINK_SET | 12633 | * 0x08 LINK_SET |
12634 | * 0x10 UNIFORM for scale | 12634 | * 0x10 UNIFORM for scale |
12635 | */ | 12635 | */ |
@@ -12668,7 +12668,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
12668 | updatehandler(localId, udata, this); | 12668 | updatehandler(localId, udata, this); |
12669 | break; | 12669 | break; |
12670 | 12670 | ||
12671 | case 0x14: // uniform scale sp | 12671 | case 0x14: // uniform scale sp |
12672 | udata.scale = new Vector3(block.Data, 0); | 12672 | udata.scale = new Vector3(block.Data, 0); |
12673 | 12673 | ||
12674 | udata.change = ObjectChangeType.primUS; | 12674 | udata.change = ObjectChangeType.primUS; |
@@ -12938,7 +12938,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
12938 | 12938 | ||
12939 | if (DebugPacketLevel <= 100 && (packet.Type == PacketType.AvatarAnimation || packet.Type == PacketType.ViewerEffect)) | 12939 | if (DebugPacketLevel <= 100 && (packet.Type == PacketType.AvatarAnimation || packet.Type == PacketType.ViewerEffect)) |
12940 | logPacket = false; | 12940 | logPacket = false; |
12941 | 12941 | ||
12942 | if (DebugPacketLevel <= 50 | 12942 | if (DebugPacketLevel <= 50 |
12943 | && (packet.Type == PacketType.ImprovedTerseObjectUpdate || packet.Type == PacketType.ObjectUpdate)) | 12943 | && (packet.Type == PacketType.ImprovedTerseObjectUpdate || packet.Type == PacketType.ObjectUpdate)) |
12944 | logPacket = false; | 12944 | logPacket = false; |
@@ -12951,7 +12951,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
12951 | "[CLIENT]: PACKET OUT to {0} ({1}) in {2} - {3}", | 12951 | "[CLIENT]: PACKET OUT to {0} ({1}) in {2} - {3}", |
12952 | Name, SceneAgent.IsChildAgent ? "child" : "root ", m_scene.RegionInfo.RegionName, packet.Type); | 12952 | Name, SceneAgent.IsChildAgent ? "child" : "root ", m_scene.RegionInfo.RegionName, packet.Type); |
12953 | } | 12953 | } |
12954 | 12954 | ||
12955 | m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting, method); | 12955 | m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting, method); |
12956 | } | 12956 | } |
12957 | 12957 | ||
@@ -13198,9 +13198,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
13198 | { | 13198 | { |
13199 | GroupMembershipData[] GroupMembership = | 13199 | GroupMembershipData[] GroupMembership = |
13200 | m_GroupsModule.GetMembershipData(AgentId); | 13200 | m_GroupsModule.GetMembershipData(AgentId); |
13201 | 13201 | ||
13202 | m_groupPowers.Clear(); | 13202 | m_groupPowers.Clear(); |
13203 | 13203 | ||
13204 | if (GroupMembership != null) | 13204 | if (GroupMembership != null) |
13205 | { | 13205 | { |
13206 | for (int i = 0; i < GroupMembership.Length; i++) | 13206 | for (int i = 0; i < GroupMembership.Length; i++) |
@@ -13220,7 +13220,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
13220 | m_activeGroupName = activeMembership.GroupName; | 13220 | m_activeGroupName = activeMembership.GroupName; |
13221 | m_activeGroupPowers = ActiveGroupPowers; | 13221 | m_activeGroupPowers = ActiveGroupPowers; |
13222 | } | 13222 | } |
13223 | } | 13223 | } |
13224 | } | 13224 | } |
13225 | 13225 | ||
13226 | if(activeMembership == null) | 13226 | if(activeMembership == null) |
@@ -13237,7 +13237,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
13237 | lock(m_groupPowers) | 13237 | lock(m_groupPowers) |
13238 | { | 13238 | { |
13239 | m_groupPowers.Clear(); | 13239 | m_groupPowers.Clear(); |
13240 | 13240 | ||
13241 | if (data != null) | 13241 | if (data != null) |
13242 | { | 13242 | { |
13243 | for (int i = 0; i < data.Length; i++) | 13243 | for (int i = 0; i < data.Length; i++) |
@@ -13522,7 +13522,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
13522 | if (p is ScenePresence) | 13522 | if (p is ScenePresence) |
13523 | { | 13523 | { |
13524 | // m_log.DebugFormat( | 13524 | // m_log.DebugFormat( |
13525 | // "[LLCLIENTVIEW]: Immediately sending terse agent update for {0} to {1} in {2}", | 13525 | // "[LLCLIENTVIEW]: Immediately sending terse agent update for {0} to {1} in {2}", |
13526 | // p.Name, Name, Scene.Name); | 13526 | // p.Name, Name, Scene.Name); |
13527 | 13527 | ||
13528 | // It turns out to get the agent to stop flying, you have to feed it stop flying velocities | 13528 | // It turns out to get the agent to stop flying, you have to feed it stop flying velocities |
@@ -13559,7 +13559,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
13559 | PlacesReplyData[] data) | 13559 | PlacesReplyData[] data) |
13560 | { | 13560 | { |
13561 | PlacesReplyPacket reply = null; | 13561 | PlacesReplyPacket reply = null; |
13562 | PlacesReplyPacket.QueryDataBlock[] dataBlocks = | 13562 | PlacesReplyPacket.QueryDataBlock[] dataBlocks = |
13563 | new PlacesReplyPacket.QueryDataBlock[0]; | 13563 | new PlacesReplyPacket.QueryDataBlock[0]; |
13564 | 13564 | ||
13565 | for (int i = 0 ; i < data.Length ; i++) | 13565 | for (int i = 0 ; i < data.Length ; i++) |
@@ -13737,7 +13737,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
13737 | foreach (InventoryItemBase item in items) | 13737 | foreach (InventoryItemBase item in items) |
13738 | { | 13738 | { |
13739 | OSDMap ItemDataMap = new OSDMap(); | 13739 | OSDMap ItemDataMap = new OSDMap(); |
13740 | 13740 | ||
13741 | ItemDataMap.Add("ItemID", OSD.FromUUID(item.ID)); | 13741 | ItemDataMap.Add("ItemID", OSD.FromUUID(item.ID)); |
13742 | ItemDataMap.Add("FolderID", OSD.FromUUID(item.Folder)); | 13742 | ItemDataMap.Add("FolderID", OSD.FromUUID(item.Folder)); |
13743 | 13743 | ||
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs index 41dd4d1..deefd40 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLImageManager.cs | |||
@@ -82,7 +82,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
82 | 82 | ||
83 | if (pAssetCache != null) | 83 | if (pAssetCache != null) |
84 | m_missingImage = pAssetCache.Get("5748decc-f629-461c-9a36-a35a221fe21f"); | 84 | m_missingImage = pAssetCache.Get("5748decc-f629-461c-9a36-a35a221fe21f"); |
85 | 85 | ||
86 | if (m_missingImage == null) | 86 | if (m_missingImage == null) |
87 | m_log.Error("[ClientView] - Couldn't set missing image asset, falling back to missing image packet. This is known to crash the client"); | 87 | m_log.Error("[ClientView] - Couldn't set missing image asset, falling back to missing image packet. This is known to crash the client"); |
88 | 88 | ||
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs index dc8ac3c..439621a 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs | |||
@@ -52,7 +52,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
52 | /// are waiting on ACKs for</param> | 52 | /// are waiting on ACKs for</param> |
53 | public delegate void PacketStats(int inPackets, int outPackets, int unAckedBytes); | 53 | public delegate void PacketStats(int inPackets, int outPackets, int unAckedBytes); |
54 | /// <summary> | 54 | /// <summary> |
55 | /// Fired when the queue for one or more packet categories is empty. This | 55 | /// Fired when the queue for one or more packet categories is empty. This |
56 | /// event can be hooked to put more data on the empty queues | 56 | /// event can be hooked to put more data on the empty queues |
57 | /// </summary> | 57 | /// </summary> |
58 | /// <param name="category">Categories of the packet queues that are empty</param> | 58 | /// <param name="category">Categories of the packet queues that are empty</param> |
@@ -86,8 +86,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
86 | /// Controls whether information is logged about each outbound packet immediately before it is sent. For debug purposes. | 86 | /// Controls whether information is logged about each outbound packet immediately before it is sent. For debug purposes. |
87 | /// </summary> | 87 | /// </summary> |
88 | /// <remarks>Any level above 0 will turn on logging.</remarks> | 88 | /// <remarks>Any level above 0 will turn on logging.</remarks> |
89 | public int ThrottleDebugLevel | 89 | public int ThrottleDebugLevel |
90 | { | 90 | { |
91 | get | 91 | get |
92 | { | 92 | { |
93 | return m_throttleDebugLevel; | 93 | return m_throttleDebugLevel; |
@@ -157,7 +157,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
157 | /// <summary>Number of packets sent to this client</summary> | 157 | /// <summary>Number of packets sent to this client</summary> |
158 | public int PacketsSent; | 158 | public int PacketsSent; |
159 | /// <summary>Number of packets resent to this client</summary> | 159 | /// <summary>Number of packets resent to this client</summary> |
160 | public int PacketsResent; | 160 | public int PacketsResent; |
161 | /// <summary>Total byte count of unacked packets sent to this client</summary> | 161 | /// <summary>Total byte count of unacked packets sent to this client</summary> |
162 | public int UnackedBytes; | 162 | public int UnackedBytes; |
163 | 163 | ||
@@ -215,7 +215,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
215 | /// textures are now generally handled through http. | 215 | /// textures are now generally handled through http. |
216 | /// </summary> | 216 | /// </summary> |
217 | private double m_cannibalrate = 0.0; | 217 | private double m_cannibalrate = 0.0; |
218 | 218 | ||
219 | private ClientInfo m_info = new ClientInfo(); | 219 | private ClientInfo m_info = new ClientInfo(); |
220 | 220 | ||
221 | /// <summary> | 221 | /// <summary> |
@@ -276,7 +276,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
276 | 276 | ||
277 | // Initialize this to a sane value to prevent early disconnects | 277 | // Initialize this to a sane value to prevent early disconnects |
278 | TickLastPacketReceived = Environment.TickCount & Int32.MaxValue; | 278 | TickLastPacketReceived = Environment.TickCount & Int32.MaxValue; |
279 | m_pingMS = (int)(3.0 * server.TickCountResolution); // so filter doesnt start at 0; | 279 | m_pingMS = (int)(3.0 * server.TickCountResolution); // so filter doesnt start at 0; |
280 | } | 280 | } |
281 | 281 | ||
282 | /// <summary> | 282 | /// <summary> |
@@ -370,7 +370,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
370 | return string.Format( | 370 | return string.Format( |
371 | "{0,7} {1,7} {2,7} {3,9} {4,7} {5,7} {6,7} {7,7} {8,7} {9,8} {10,7} {11,7}", | 371 | "{0,7} {1,7} {2,7} {3,9} {4,7} {5,7} {6,7} {7,7} {8,7} {9,8} {10,7} {11,7}", |
372 | Util.EnvironmentTickCountSubtract(TickLastPacketReceived), | 372 | Util.EnvironmentTickCountSubtract(TickLastPacketReceived), |
373 | PacketsReceived, | 373 | PacketsReceived, |
374 | PacketsSent, | 374 | PacketsSent, |
375 | PacketsResent, | 375 | PacketsResent, |
376 | UnackedBytes, | 376 | UnackedBytes, |
@@ -540,7 +540,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
540 | 540 | ||
541 | return data; | 541 | return data; |
542 | } | 542 | } |
543 | 543 | ||
544 | public int GetCatBytesCanSend(ThrottleOutPacketType cat, int timeMS) | 544 | public int GetCatBytesCanSend(ThrottleOutPacketType cat, int timeMS) |
545 | { | 545 | { |
546 | int icat = (int)cat; | 546 | int icat = (int)cat; |
@@ -559,7 +559,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
559 | /// <param name="packet"></param> | 559 | /// <param name="packet"></param> |
560 | /// <param name="forceQueue">Always queue the packet if at all possible.</param> | 560 | /// <param name="forceQueue">Always queue the packet if at all possible.</param> |
561 | /// <returns> | 561 | /// <returns> |
562 | /// true if the packet has been queued, | 562 | /// true if the packet has been queued, |
563 | /// false if the packet has not been queued and should be sent immediately. | 563 | /// false if the packet has not been queued and should be sent immediately. |
564 | /// </returns> | 564 | /// </returns> |
565 | public bool EnqueueOutgoing(OutgoingPacket packet, bool forceQueue) | 565 | public bool EnqueueOutgoing(OutgoingPacket packet, bool forceQueue) |
@@ -589,7 +589,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
589 | queue.Enqueue(packet, highPriority); | 589 | queue.Enqueue(packet, highPriority); |
590 | return true; | 590 | return true; |
591 | } | 591 | } |
592 | 592 | ||
593 | if (!forceQueue && bucket.CheckTokens(packet.Buffer.DataLength)) | 593 | if (!forceQueue && bucket.CheckTokens(packet.Buffer.DataLength)) |
594 | { | 594 | { |
595 | // enough tokens so it can be sent imediatly by caller | 595 | // enough tokens so it can be sent imediatly by caller |
@@ -608,24 +608,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
608 | // We don't have a token bucket for this category, so it will not be queued | 608 | // We don't have a token bucket for this category, so it will not be queued |
609 | return false; | 609 | return false; |
610 | } | 610 | } |
611 | 611 | ||
612 | } | 612 | } |
613 | 613 | ||
614 | /// <summary> | 614 | /// <summary> |
615 | /// Loops through all of the packet queues for this client and tries to send | 615 | /// Loops through all of the packet queues for this client and tries to send |
616 | /// an outgoing packet from each, obeying the throttling bucket limits | 616 | /// an outgoing packet from each, obeying the throttling bucket limits |
617 | /// </summary> | 617 | /// </summary> |
618 | /// | 618 | /// |
619 | /// <remarks> | 619 | /// <remarks> |
620 | /// Packet queues are inspected in ascending numerical order starting from 0. Therefore, queues with a lower | 620 | /// Packet queues are inspected in ascending numerical order starting from 0. Therefore, queues with a lower |
621 | /// ThrottleOutPacketType number will see their packet get sent first (e.g. if both Land and Wind queues have | 621 | /// ThrottleOutPacketType number will see their packet get sent first (e.g. if both Land and Wind queues have |
622 | /// packets, then the packet at the front of the Land queue will be sent before the packet at the front of the | 622 | /// packets, then the packet at the front of the Land queue will be sent before the packet at the front of the |
623 | /// wind queue). | 623 | /// wind queue). |
624 | /// | 624 | /// |
625 | /// This function is only called from a synchronous loop in the | 625 | /// This function is only called from a synchronous loop in the |
626 | /// UDPServer so we don't need to bother making this thread safe | 626 | /// UDPServer so we don't need to bother making this thread safe |
627 | /// </remarks> | 627 | /// </remarks> |
628 | /// | 628 | /// |
629 | /// <returns>True if any packets were sent, otherwise false</returns> | 629 | /// <returns>True if any packets were sent, otherwise false</returns> |
630 | public bool DequeueOutgoing() | 630 | public bool DequeueOutgoing() |
631 | { | 631 | { |
@@ -791,7 +791,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
791 | double start = Util.GetTimeStampMS(); | 791 | double start = Util.GetTimeStampMS(); |
792 | if (start < m_nextOnQueueEmpty) | 792 | if (start < m_nextOnQueueEmpty) |
793 | return; | 793 | return; |
794 | 794 | ||
795 | m_isQueueEmptyRunning = true; | 795 | m_isQueueEmptyRunning = true; |
796 | m_nextOnQueueEmpty = start + MIN_CALLBACK_MS; | 796 | m_nextOnQueueEmpty = start + MIN_CALLBACK_MS; |
797 | 797 | ||
@@ -803,7 +803,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
803 | } | 803 | } |
804 | } | 804 | } |
805 | 805 | ||
806 | 806 | ||
807 | 807 | ||
808 | /// <summary> | 808 | /// <summary> |
809 | /// Fires the OnQueueEmpty callback and sets the minimum time that it | 809 | /// Fires the OnQueueEmpty callback and sets the minimum time that it |
@@ -820,7 +820,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
820 | if (callback != null) | 820 | if (callback != null) |
821 | { | 821 | { |
822 | // if (m_udpServer.IsRunningOutbound) | 822 | // if (m_udpServer.IsRunningOutbound) |
823 | // { | 823 | // { |
824 | try { callback(categories); } | 824 | try { callback(categories); } |
825 | catch (Exception e) { m_log.Error("[LLUDPCLIENT]: OnQueueEmpty(" + categories + ") threw an exception: " + e.Message, e); } | 825 | catch (Exception e) { m_log.Error("[LLUDPCLIENT]: OnQueueEmpty(" + categories + ") threw an exception: " + e.Message, e); } |
826 | // } | 826 | // } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index cedb9b4..ec51e28 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | |||
@@ -222,7 +222,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
222 | StatType.Pull, | 222 | StatType.Pull, |
223 | MeasuresOfInterest.None, | 223 | MeasuresOfInterest.None, |
224 | stat => stat.Value = m_udpServer.AverageReceiveTicksForLastSamplePeriod, | 224 | stat => stat.Value = m_udpServer.AverageReceiveTicksForLastSamplePeriod, |
225 | // stat => | 225 | // stat => |
226 | // stat.Value = Math.Round(m_udpServer.AverageReceiveTicksForLastSamplePeriod, 7), | 226 | // stat.Value = Math.Round(m_udpServer.AverageReceiveTicksForLastSamplePeriod, 7), |
227 | StatVerbosity.Debug)); | 227 | StatVerbosity.Debug)); |
228 | } | 228 | } |
@@ -272,7 +272,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
272 | /// <summary>The measured resolution of Environment.TickCount</summary> | 272 | /// <summary>The measured resolution of Environment.TickCount</summary> |
273 | public readonly float TickCountResolution; | 273 | public readonly float TickCountResolution; |
274 | 274 | ||
275 | /// <summary>Number of prim updates to put on the queue each time the | 275 | /// <summary>Number of prim updates to put on the queue each time the |
276 | /// OnQueueEmpty event is triggered for updates</summary> | 276 | /// OnQueueEmpty event is triggered for updates</summary> |
277 | public readonly int PrimUpdatesPerCallback; | 277 | public readonly int PrimUpdatesPerCallback; |
278 | 278 | ||
@@ -289,7 +289,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
289 | 289 | ||
290 | /// <summary>Bandwidth throttle for this UDP server</summary> | 290 | /// <summary>Bandwidth throttle for this UDP server</summary> |
291 | public TokenBucket Throttle { get; protected set; } | 291 | public TokenBucket Throttle { get; protected set; } |
292 | 292 | ||
293 | /// <summary>Per client throttle rates enforced by this server</summary> | 293 | /// <summary>Per client throttle rates enforced by this server</summary> |
294 | /// <remarks> | 294 | /// <remarks> |
295 | /// If the total rate is non-zero, then this is the maximum total throttle setting that any client can ever have. | 295 | /// If the total rate is non-zero, then this is the maximum total throttle setting that any client can ever have. |
@@ -297,7 +297,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
297 | /// do get changed immediately). They do not need to sum to the total. | 297 | /// do get changed immediately). They do not need to sum to the total. |
298 | /// </remarks> | 298 | /// </remarks> |
299 | public ThrottleRates ThrottleRates { get; protected set; } | 299 | public ThrottleRates ThrottleRates { get; protected set; } |
300 | 300 | ||
301 | /// <summary>Manages authentication for agent circuits</summary> | 301 | /// <summary>Manages authentication for agent circuits</summary> |
302 | protected AgentCircuitManager m_circuitManager; | 302 | protected AgentCircuitManager m_circuitManager; |
303 | 303 | ||
@@ -436,8 +436,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
436 | { | 436 | { |
437 | #region Environment.TickCount Measurement | 437 | #region Environment.TickCount Measurement |
438 | 438 | ||
439 | // Update the port with the one we actually got | 439 | // Update the port with the one we actually got |
440 | port = (uint)Port; | 440 | port = (uint)Port; |
441 | 441 | ||
442 | // Measure the resolution of Environment.TickCount | 442 | // Measure the resolution of Environment.TickCount |
443 | TickCountResolution = 0f; | 443 | TickCountResolution = 0f; |
@@ -696,15 +696,15 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
696 | 696 | ||
697 | Scene = (Scene)scene; | 697 | Scene = (Scene)scene; |
698 | m_location = new Location(Scene.RegionInfo.RegionHandle); | 698 | m_location = new Location(Scene.RegionInfo.RegionHandle); |
699 | 699 | ||
700 | IpahEngine | 700 | IpahEngine |
701 | = new JobEngine( | 701 | = new JobEngine( |
702 | string.Format("Incoming Packet Async Handling Engine ({0})", Scene.Name), | 702 | string.Format("Incoming Packet Async Handling Engine ({0})", Scene.Name), |
703 | "INCOMING PACKET ASYNC HANDLING ENGINE"); | 703 | "INCOMING PACKET ASYNC HANDLING ENGINE"); |
704 | 704 | ||
705 | OqrEngine | 705 | OqrEngine |
706 | = new JobEngine( | 706 | = new JobEngine( |
707 | string.Format("Outgoing Queue Refill Engine ({0})", Scene.Name), | 707 | string.Format("Outgoing Queue Refill Engine ({0})", Scene.Name), |
708 | "OUTGOING QUEUE REFILL ENGINE"); | 708 | "OUTGOING QUEUE REFILL ENGINE"); |
709 | 709 | ||
710 | StatsManager.RegisterStat( | 710 | StatsManager.RegisterStat( |
@@ -730,9 +730,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
730 | "clientstack", | 730 | "clientstack", |
731 | Scene.Name, | 731 | Scene.Name, |
732 | StatType.Pull, | 732 | StatType.Pull, |
733 | stat => | 733 | stat => |
734 | { PercentageStat pstat = (PercentageStat)stat; | 734 | { PercentageStat pstat = (PercentageStat)stat; |
735 | pstat.Consequent = PacketPool.Instance.PacketsRequested; | 735 | pstat.Consequent = PacketPool.Instance.PacketsRequested; |
736 | pstat.Antecedent = PacketPool.Instance.PacketsReused; }, | 736 | pstat.Antecedent = PacketPool.Instance.PacketsReused; }, |
737 | StatVerbosity.Debug)); | 737 | StatVerbosity.Debug)); |
738 | 738 | ||
@@ -745,8 +745,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
745 | Scene.Name, | 745 | Scene.Name, |
746 | StatType.Pull, | 746 | StatType.Pull, |
747 | stat => | 747 | stat => |
748 | { PercentageStat pstat = (PercentageStat)stat; | 748 | { PercentageStat pstat = (PercentageStat)stat; |
749 | pstat.Consequent = PacketPool.Instance.BlocksRequested; | 749 | pstat.Consequent = PacketPool.Instance.BlocksRequested; |
750 | pstat.Antecedent = PacketPool.Instance.BlocksReused; }, | 750 | pstat.Antecedent = PacketPool.Instance.BlocksReused; }, |
751 | StatVerbosity.Debug)); | 751 | StatVerbosity.Debug)); |
752 | 752 | ||
@@ -799,7 +799,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
799 | MeasuresOfInterest.None, | 799 | MeasuresOfInterest.None, |
800 | stat => stat.Value = IpahEngine.JobsWaiting, | 800 | stat => stat.Value = IpahEngine.JobsWaiting, |
801 | StatVerbosity.Debug)); | 801 | StatVerbosity.Debug)); |
802 | 802 | ||
803 | StatsManager.RegisterStat( | 803 | StatsManager.RegisterStat( |
804 | new Stat( | 804 | new Stat( |
805 | "OQRERequestsWaiting", | 805 | "OQRERequestsWaiting", |
@@ -812,7 +812,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
812 | MeasuresOfInterest.None, | 812 | MeasuresOfInterest.None, |
813 | stat => stat.Value = OqrEngine.JobsWaiting, | 813 | stat => stat.Value = OqrEngine.JobsWaiting, |
814 | StatVerbosity.Debug)); | 814 | StatVerbosity.Debug)); |
815 | 815 | ||
816 | // We delay enabling pool stats to AddScene() instead of Initialize() so that we can distinguish pool stats by | 816 | // We delay enabling pool stats to AddScene() instead of Initialize() so that we can distinguish pool stats by |
817 | // scene name | 817 | // scene name |
818 | if (UsePools) | 818 | if (UsePools) |
@@ -1012,7 +1012,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1012 | if ((outgoingPacket.Buffer.Data[0] & Helpers.MSG_RELIABLE) != 0) | 1012 | if ((outgoingPacket.Buffer.Data[0] & Helpers.MSG_RELIABLE) != 0) |
1013 | outgoingPacket.UnackedMethod = ((method == null) ? delegate(OutgoingPacket oPacket) { ResendUnacked(oPacket); } : method); | 1013 | outgoingPacket.UnackedMethod = ((method == null) ? delegate(OutgoingPacket oPacket) { ResendUnacked(oPacket); } : method); |
1014 | 1014 | ||
1015 | // If a Linden Lab 1.23.5 client receives an update packet after a kill packet for an object, it will | 1015 | // If a Linden Lab 1.23.5 client receives an update packet after a kill packet for an object, it will |
1016 | // continue to display the deleted object until relog. Therefore, we need to always queue a kill object | 1016 | // continue to display the deleted object until relog. Therefore, we need to always queue a kill object |
1017 | // packet so that it isn't sent before a queued update packet. | 1017 | // packet so that it isn't sent before a queued update packet. |
1018 | 1018 | ||
@@ -1242,7 +1242,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1242 | 1242 | ||
1243 | if ((IncomingMalformedPacketCount % 10000) == 0) | 1243 | if ((IncomingMalformedPacketCount % 10000) == 0) |
1244 | m_log.WarnFormat( | 1244 | m_log.WarnFormat( |
1245 | "[LLUDPSERVER]: Received {0} malformed packets so far, probable network attack. Last was from {1}", | 1245 | "[LLUDPSERVER]: Received {0} malformed packets so far, probable network attack. Last was from {1}", |
1246 | IncomingMalformedPacketCount, endPoint); | 1246 | IncomingMalformedPacketCount, endPoint); |
1247 | } | 1247 | } |
1248 | 1248 | ||
@@ -1391,7 +1391,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1391 | 1391 | ||
1392 | if ((IncomingOrphanedPacketCount % 10000) == 0) | 1392 | if ((IncomingOrphanedPacketCount % 10000) == 0) |
1393 | m_log.WarnFormat( | 1393 | m_log.WarnFormat( |
1394 | "[LLUDPSERVER]: Received {0} orphaned packets so far. Last was from {1}", | 1394 | "[LLUDPSERVER]: Received {0} orphaned packets so far. Last was from {1}", |
1395 | IncomingOrphanedPacketCount, endPoint); | 1395 | IncomingOrphanedPacketCount, endPoint); |
1396 | 1396 | ||
1397 | return; | 1397 | return; |
@@ -1482,7 +1482,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1482 | { | 1482 | { |
1483 | if (packet.Header.Resent) | 1483 | if (packet.Header.Resent) |
1484 | m_log.DebugFormat( | 1484 | m_log.DebugFormat( |
1485 | "[LLUDPSERVER]: Received a resend of already processed packet #{0}, type {1} from {2}", | 1485 | "[LLUDPSERVER]: Received a resend of already processed packet #{0}, type {1} from {2}", |
1486 | packet.Header.Sequence, packet.Type, client.Name); | 1486 | packet.Header.Sequence, packet.Type, client.Name); |
1487 | else | 1487 | else |
1488 | m_log.WarnFormat( | 1488 | m_log.WarnFormat( |
@@ -1512,7 +1512,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1512 | // We don't need to do anything else with ping checks | 1512 | // We don't need to do anything else with ping checks |
1513 | StartPingCheckPacket startPing = (StartPingCheckPacket)packet; | 1513 | StartPingCheckPacket startPing = (StartPingCheckPacket)packet; |
1514 | CompletePing(udpClient, startPing.PingID.PingID); | 1514 | CompletePing(udpClient, startPing.PingID.PingID); |
1515 | 1515 | ||
1516 | if ((Environment.TickCount - m_elapsedMSSinceLastStatReport) >= 3000) | 1516 | if ((Environment.TickCount - m_elapsedMSSinceLastStatReport) >= 3000) |
1517 | { | 1517 | { |
1518 | udpClient.SendPacketStats(); | 1518 | udpClient.SendPacketStats(); |
@@ -1677,7 +1677,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1677 | m_log.DebugFormat( | 1677 | m_log.DebugFormat( |
1678 | "[LLUDPSERVER]: Handling UseCircuitCode request for circuit {0} to {1} from IP {2}", | 1678 | "[LLUDPSERVER]: Handling UseCircuitCode request for circuit {0} to {1} from IP {2}", |
1679 | uccp.CircuitCode.Code, Scene.RegionInfo.RegionName, endPoint); | 1679 | uccp.CircuitCode.Code, Scene.RegionInfo.RegionName, endPoint); |
1680 | 1680 | ||
1681 | AuthenticateResponse sessionInfo; | 1681 | AuthenticateResponse sessionInfo; |
1682 | if (IsClientAuthorized(uccp, out sessionInfo)) | 1682 | if (IsClientAuthorized(uccp, out sessionInfo)) |
1683 | { | 1683 | { |
@@ -1752,10 +1752,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1752 | 1752 | ||
1753 | lock (m_pendingCache) | 1753 | lock (m_pendingCache) |
1754 | m_pendingCache.Remove(endPoint); | 1754 | m_pendingCache.Remove(endPoint); |
1755 | } | 1755 | } |
1756 | 1756 | ||
1757 | // m_log.DebugFormat( | 1757 | // m_log.DebugFormat( |
1758 | // "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms", | 1758 | // "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms", |
1759 | // buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds); | 1759 | // buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds); |
1760 | 1760 | ||
1761 | } | 1761 | } |
@@ -1787,9 +1787,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1787 | 1787 | ||
1788 | // Determine which agent this packet came from | 1788 | // Determine which agent this packet came from |
1789 | // We need to wait here because in when using the OpenSimulator V2 teleport protocol to travel to a destination | 1789 | // We need to wait here because in when using the OpenSimulator V2 teleport protocol to travel to a destination |
1790 | // simulator with no existing child presence, the viewer (at least LL 3.3.4) will send UseCircuitCode | 1790 | // simulator with no existing child presence, the viewer (at least LL 3.3.4) will send UseCircuitCode |
1791 | // and then CompleteAgentMovement immediately without waiting for an ack. As we are now handling these | 1791 | // and then CompleteAgentMovement immediately without waiting for an ack. As we are now handling these |
1792 | // packets asynchronously, we need to account for this thread proceeding more quickly than the | 1792 | // packets asynchronously, we need to account for this thread proceeding more quickly than the |
1793 | // UseCircuitCode thread. | 1793 | // UseCircuitCode thread. |
1794 | int count = 40; | 1794 | int count = 40; |
1795 | while (count-- > 0) | 1795 | while (count-- > 0) |
@@ -1811,7 +1811,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1811 | // manager but the SceneAgent has not yet been set in Scene.AddNewAgent(). If we are too | 1811 | // manager but the SceneAgent has not yet been set in Scene.AddNewAgent(). If we are too |
1812 | // eager, then the new ScenePresence may not have registered a listener for this messsage | 1812 | // eager, then the new ScenePresence may not have registered a listener for this messsage |
1813 | // before we try to process it. | 1813 | // before we try to process it. |
1814 | // XXX: A better long term fix may be to add the SceneAgent before the client is added to | 1814 | // XXX: A better long term fix may be to add the SceneAgent before the client is added to |
1815 | // the client manager | 1815 | // the client manager |
1816 | m_log.DebugFormat( | 1816 | m_log.DebugFormat( |
1817 | "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} for {1} in {2} but client SceneAgent not set yet. Waiting.", | 1817 | "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} for {1} in {2} but client SceneAgent not set yet. Waiting.", |
@@ -1825,7 +1825,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1825 | else | 1825 | else |
1826 | { | 1826 | { |
1827 | m_log.DebugFormat( | 1827 | m_log.DebugFormat( |
1828 | "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} in {1} but no client exists yet. Waiting.", | 1828 | "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} in {1} but no client exists yet. Waiting.", |
1829 | endPoint, Scene.Name); | 1829 | endPoint, Scene.Name); |
1830 | } | 1830 | } |
1831 | 1831 | ||
@@ -1962,13 +1962,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1962 | { | 1962 | { |
1963 | LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, Throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); | 1963 | LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, Throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); |
1964 | 1964 | ||
1965 | 1965 | ||
1966 | client = new LLClientView(Scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); | 1966 | client = new LLClientView(Scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); |
1967 | client.OnLogout += LogoutHandler; | 1967 | client.OnLogout += LogoutHandler; |
1968 | client.DebugPacketLevel = DefaultClientPacketDebugLevel; | 1968 | client.DebugPacketLevel = DefaultClientPacketDebugLevel; |
1969 | 1969 | ||
1970 | ((LLClientView)client).DisableFacelights = m_disableFacelights; | 1970 | ((LLClientView)client).DisableFacelights = m_disableFacelights; |
1971 | 1971 | ||
1972 | client.Start(); | 1972 | client.Start(); |
1973 | } | 1973 | } |
1974 | } | 1974 | } |
@@ -1988,7 +1988,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1988 | protected void DeactivateClientDueToTimeout(LLClientView client, int timeoutTicks) | 1988 | protected void DeactivateClientDueToTimeout(LLClientView client, int timeoutTicks) |
1989 | { | 1989 | { |
1990 | lock (client.CloseSyncLock) | 1990 | lock (client.CloseSyncLock) |
1991 | { | 1991 | { |
1992 | ClientLogoutsDueToNoReceives++; | 1992 | ClientLogoutsDueToNoReceives++; |
1993 | 1993 | ||
1994 | if (client.SceneAgent != null) | 1994 | if (client.SceneAgent != null) |
@@ -1996,7 +1996,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1996 | m_log.WarnFormat( | 1996 | m_log.WarnFormat( |
1997 | "[LLUDPSERVER]: No packets received from {0} agent of {1} for {2}ms in {3}. Disconnecting.", | 1997 | "[LLUDPSERVER]: No packets received from {0} agent of {1} for {2}ms in {3}. Disconnecting.", |
1998 | client.SceneAgent.IsChildAgent ? "child" : "root", client.Name, timeoutTicks, Scene.Name); | 1998 | client.SceneAgent.IsChildAgent ? "child" : "root", client.Name, timeoutTicks, Scene.Name); |
1999 | 1999 | ||
2000 | if (!client.SceneAgent.IsChildAgent) | 2000 | if (!client.SceneAgent.IsChildAgent) |
2001 | client.Kick("Simulator logged you out due to connection timeout."); | 2001 | client.Kick("Simulator logged you out due to connection timeout."); |
2002 | } | 2002 | } |
@@ -2020,11 +2020,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2020 | try | 2020 | try |
2021 | { | 2021 | { |
2022 | incomingPacket = packetInbox.Dequeue(250); | 2022 | incomingPacket = packetInbox.Dequeue(250); |
2023 | 2023 | ||
2024 | if (incomingPacket != null && IsRunningInbound) | 2024 | if (incomingPacket != null && IsRunningInbound) |
2025 | { | 2025 | { |
2026 | ProcessInPacket(incomingPacket); | 2026 | ProcessInPacket(incomingPacket); |
2027 | 2027 | ||
2028 | if (UsePools) | 2028 | if (UsePools) |
2029 | { | 2029 | { |
2030 | incomingPacket.Client = null; | 2030 | incomingPacket.Client = null; |
@@ -2192,7 +2192,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2192 | /// </summary> | 2192 | /// </summary> |
2193 | public long IncomingPacketsProcessed { get; protected set; } | 2193 | public long IncomingPacketsProcessed { get; protected set; } |
2194 | 2194 | ||
2195 | #endregion | 2195 | #endregion |
2196 | 2196 | ||
2197 | protected void ProcessInPacket(IncomingPacket incomingPacket) | 2197 | protected void ProcessInPacket(IncomingPacket incomingPacket) |
2198 | { | 2198 | { |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServerCommands.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServerCommands.cs index 6e6a2d1..012a57d 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServerCommands.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServerCommands.cs | |||
@@ -53,7 +53,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
53 | "Comms", false, "show server throttles", | 53 | "Comms", false, "show server throttles", |
54 | "show server throttles", | 54 | "show server throttles", |
55 | "Show information about server throttles", | 55 | "Show information about server throttles", |
56 | HandleShowServerThrottlesCommand); | 56 | HandleShowServerThrottlesCommand); |
57 | 57 | ||
58 | m_console.Commands.AddCommand( | 58 | m_console.Commands.AddCommand( |
59 | "Debug", false, "debug lludp packet", | 59 | "Debug", false, "debug lludp packet", |
@@ -207,8 +207,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
207 | HandleClientGetCommand); | 207 | HandleClientGetCommand); |
208 | 208 | ||
209 | m_console.Commands.AddCommand( | 209 | m_console.Commands.AddCommand( |
210 | "Debug", | 210 | "Debug", |
211 | false, | 211 | false, |
212 | "debug lludp client set", | 212 | "debug lludp client set", |
213 | "debug lludp client set <param> <value> [<avatar-first-name> <avatar-last-name>]", | 213 | "debug lludp client set <param> <value> [<avatar-first-name> <avatar-last-name>]", |
214 | "Set a debug parameter for a particular client. If no name is given then the value is set on all clients.", | 214 | "Set a debug parameter for a particular client. If no name is given then the value is set on all clients.", |
@@ -228,22 +228,22 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
228 | 228 | ||
229 | long maxSceneDripRate = (long)m_udpServer.Throttle.MaxDripRate; | 229 | long maxSceneDripRate = (long)m_udpServer.Throttle.MaxDripRate; |
230 | cdl.AddRow( | 230 | cdl.AddRow( |
231 | "Max scene throttle", | 231 | "Max scene throttle", |
232 | maxSceneDripRate != 0 ? string.Format("{0} kbps", maxSceneDripRate * 8 / 1000) : "unset"); | 232 | maxSceneDripRate != 0 ? string.Format("{0} kbps", maxSceneDripRate * 8 / 1000) : "unset"); |
233 | 233 | ||
234 | int maxClientDripRate = m_udpServer.ThrottleRates.Total; | 234 | int maxClientDripRate = m_udpServer.ThrottleRates.Total; |
235 | cdl.AddRow( | 235 | cdl.AddRow( |
236 | "Max new client throttle", | 236 | "Max new client throttle", |
237 | maxClientDripRate != 0 ? string.Format("{0} kbps", maxClientDripRate * 8 / 1000) : "unset"); | 237 | maxClientDripRate != 0 ? string.Format("{0} kbps", maxClientDripRate * 8 / 1000) : "unset"); |
238 | 238 | ||
239 | m_console.Output(cdl.ToString()); | 239 | m_console.Output(cdl.ToString()); |
240 | 240 | ||
241 | m_console.OutputFormat("{0}\n", GetServerThrottlesReport(m_udpServer)); | 241 | m_console.OutputFormat("{0}\n", GetServerThrottlesReport(m_udpServer)); |
242 | } | 242 | } |
243 | 243 | ||
244 | private string GetServerThrottlesReport(LLUDPServer udpServer) | 244 | private string GetServerThrottlesReport(LLUDPServer udpServer) |
245 | { | 245 | { |
246 | StringBuilder report = new StringBuilder(); | 246 | StringBuilder report = new StringBuilder(); |
247 | 247 | ||
248 | report.AppendFormat( | 248 | report.AppendFormat( |
249 | "{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}\n", | 249 | "{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}\n", |
@@ -254,7 +254,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
254 | "Cloud", | 254 | "Cloud", |
255 | "Task", | 255 | "Task", |
256 | "Texture", | 256 | "Texture", |
257 | "Asset"); | 257 | "Asset"); |
258 | 258 | ||
259 | report.AppendFormat( | 259 | report.AppendFormat( |
260 | "{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}\n", | 260 | "{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}\n", |
@@ -265,7 +265,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
265 | "kb/s", | 265 | "kb/s", |
266 | "kb/s", | 266 | "kb/s", |
267 | "kb/s", | 267 | "kb/s", |
268 | "kb/s"); | 268 | "kb/s"); |
269 | 269 | ||
270 | ThrottleRates throttleRates = udpServer.ThrottleRates; | 270 | ThrottleRates throttleRates = udpServer.ThrottleRates; |
271 | report.AppendFormat( | 271 | report.AppendFormat( |
@@ -277,16 +277,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
277 | (throttleRates.Cloud * 8) / 1000, | 277 | (throttleRates.Cloud * 8) / 1000, |
278 | (throttleRates.Task * 8) / 1000, | 278 | (throttleRates.Task * 8) / 1000, |
279 | (throttleRates.Texture * 8) / 1000, | 279 | (throttleRates.Texture * 8) / 1000, |
280 | (throttleRates.Asset * 8) / 1000); | 280 | (throttleRates.Asset * 8) / 1000); |
281 | 281 | ||
282 | return report.ToString(); | 282 | return report.ToString(); |
283 | } | 283 | } |
284 | 284 | ||
285 | protected string GetColumnEntry(string entry, int maxLength, int columnPadding) | 285 | protected string GetColumnEntry(string entry, int maxLength, int columnPadding) |
286 | { | 286 | { |
287 | return string.Format( | 287 | return string.Format( |
288 | "{0,-" + maxLength + "}{1,-" + columnPadding + "}", | 288 | "{0,-" + maxLength + "}{1,-" + columnPadding + "}", |
289 | entry.Length > maxLength ? entry.Substring(0, maxLength) : entry, | 289 | entry.Length > maxLength ? entry.Substring(0, maxLength) : entry, |
290 | ""); | 290 | ""); |
291 | } | 291 | } |
292 | 292 | ||
@@ -375,7 +375,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
375 | MainConsole.Instance.OutputFormat( | 375 | MainConsole.Instance.OutputFormat( |
376 | "Usage: debug lludp throttles set <param> <value> [<avatar-first-name> <avatar-last-name>]"); | 376 | "Usage: debug lludp throttles set <param> <value> [<avatar-first-name> <avatar-last-name>]"); |
377 | return; | 377 | return; |
378 | } | 378 | } |
379 | 379 | ||
380 | string param = args[4]; | 380 | string param = args[4]; |
381 | string rawValue = args[5]; | 381 | string rawValue = args[5]; |
@@ -467,7 +467,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
467 | MainConsole.Instance.OutputFormat( | 467 | MainConsole.Instance.OutputFormat( |
468 | "Usage: debug lludp throttles get [<avatar-first-name> <avatar-last-name>]"); | 468 | "Usage: debug lludp throttles get [<avatar-first-name> <avatar-last-name>]"); |
469 | return; | 469 | return; |
470 | } | 470 | } |
471 | 471 | ||
472 | string firstName = null; | 472 | string firstName = null; |
473 | string lastName = null; | 473 | string lastName = null; |
@@ -491,7 +491,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
491 | ConsoleDisplayList cdl = new ConsoleDisplayList(); | 491 | ConsoleDisplayList cdl = new ConsoleDisplayList(); |
492 | cdl.AddRow("adaptive", udpClient.FlowThrottle.AdaptiveEnabled); | 492 | cdl.AddRow("adaptive", udpClient.FlowThrottle.AdaptiveEnabled); |
493 | cdl.AddRow("current", string.Format("{0} kbps", udpClient.FlowThrottle.DripRate * 8 / 1000)); | 493 | cdl.AddRow("current", string.Format("{0} kbps", udpClient.FlowThrottle.DripRate * 8 / 1000)); |
494 | cdl.AddRow("request", string.Format("{0} kbps", udpClient.FlowThrottle.RequestedDripRate * 8 / 1000)); | 494 | cdl.AddRow("request", string.Format("{0} kbps", udpClient.FlowThrottle.RequestedDripRate * 8 / 1000)); |
495 | cdl.AddRow("max", string.Format("{0} kbps", udpClient.FlowThrottle.MaxDripRate * 8 / 1000)); | 495 | cdl.AddRow("max", string.Format("{0} kbps", udpClient.FlowThrottle.MaxDripRate * 8 / 1000)); |
496 | 496 | ||
497 | m_console.Output(cdl.ToString()); | 497 | m_console.Output(cdl.ToString()); |
@@ -509,12 +509,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
509 | 509 | ||
510 | long maxSceneDripRate = (long)m_udpServer.Throttle.MaxDripRate; | 510 | long maxSceneDripRate = (long)m_udpServer.Throttle.MaxDripRate; |
511 | cdl.AddRow( | 511 | cdl.AddRow( |
512 | "max-scene-throttle", | 512 | "max-scene-throttle", |
513 | maxSceneDripRate != 0 ? string.Format("{0} kbps", maxSceneDripRate * 8 / 1000) : "unset"); | 513 | maxSceneDripRate != 0 ? string.Format("{0} kbps", maxSceneDripRate * 8 / 1000) : "unset"); |
514 | 514 | ||
515 | int maxClientDripRate = m_udpServer.ThrottleRates.Total; | 515 | int maxClientDripRate = m_udpServer.ThrottleRates.Total; |
516 | cdl.AddRow( | 516 | cdl.AddRow( |
517 | "max-new-client-throttle", | 517 | "max-new-client-throttle", |
518 | maxClientDripRate != 0 ? string.Format("{0} kbps", maxClientDripRate * 8 / 1000) : "unset"); | 518 | maxClientDripRate != 0 ? string.Format("{0} kbps", maxClientDripRate * 8 / 1000) : "unset"); |
519 | 519 | ||
520 | m_console.Output(cdl.ToString()); | 520 | m_console.Output(cdl.ToString()); |
@@ -529,7 +529,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
529 | { | 529 | { |
530 | MainConsole.Instance.OutputFormat("Usage: debug lludp set <param> <value>"); | 530 | MainConsole.Instance.OutputFormat("Usage: debug lludp set <param> <value>"); |
531 | return; | 531 | return; |
532 | } | 532 | } |
533 | 533 | ||
534 | string param = args[3]; | 534 | string param = args[3]; |
535 | string rawValue = args[4]; | 535 | string rawValue = args[4]; |
@@ -552,7 +552,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
552 | } | 552 | } |
553 | else | 553 | else |
554 | { | 554 | { |
555 | return; | 555 | return; |
556 | } | 556 | } |
557 | 557 | ||
558 | m_console.OutputFormat("{0} set to {1} in {2}", param, rawValue, m_udpServer.Scene.Name); | 558 | m_console.OutputFormat("{0} set to {1} in {2}", param, rawValue, m_udpServer.Scene.Name); |
@@ -598,7 +598,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
598 | { | 598 | { |
599 | MainConsole.Instance.OutputFormat("Usage: debug lludp client set <param> <value> [<avatar-first-name> <avatar-last-name>]"); | 599 | MainConsole.Instance.OutputFormat("Usage: debug lludp client set <param> <value> [<avatar-first-name> <avatar-last-name>]"); |
600 | return; | 600 | return; |
601 | } | 601 | } |
602 | 602 | ||
603 | string param = args[4]; | 603 | string param = args[4]; |
604 | string rawValue = args[5]; | 604 | string rawValue = args[5]; |
@@ -697,12 +697,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
697 | 697 | ||
698 | string direction = args[3]; | 698 | string direction = args[3]; |
699 | string subCommand = args[4]; | 699 | string subCommand = args[4]; |
700 | string packetName = args[5]; | 700 | string packetName = args[5]; |
701 | 701 | ||
702 | if (subCommand == "add") | 702 | if (subCommand == "add") |
703 | { | 703 | { |
704 | MainConsole.Instance.OutputFormat( | 704 | MainConsole.Instance.OutputFormat( |
705 | "Adding packet {0} to {1} drop list for all connections in {2}", | 705 | "Adding packet {0} to {1} drop list for all connections in {2}", |
706 | direction, packetName, m_udpServer.Scene.Name); | 706 | direction, packetName, m_udpServer.Scene.Name); |
707 | 707 | ||
708 | m_udpServer.Scene.ForEachScenePresence( | 708 | m_udpServer.Scene.ForEachScenePresence( |
@@ -720,7 +720,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
720 | else if (subCommand == "remove") | 720 | else if (subCommand == "remove") |
721 | { | 721 | { |
722 | MainConsole.Instance.OutputFormat( | 722 | MainConsole.Instance.OutputFormat( |
723 | "Removing packet {0} from {1} drop list for all connections in {2}", | 723 | "Removing packet {0} from {1} drop list for all connections in {2}", |
724 | direction, packetName, m_udpServer.Scene.Name); | 724 | direction, packetName, m_udpServer.Scene.Name); |
725 | 725 | ||
726 | m_udpServer.Scene.ForEachScenePresence( | 726 | m_udpServer.Scene.ForEachScenePresence( |
@@ -868,10 +868,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
868 | MainConsole.Instance.OutputFormat("OQRE in {0}", m_udpServer.Scene.Name); | 868 | MainConsole.Instance.OutputFormat("OQRE in {0}", m_udpServer.Scene.Name); |
869 | MainConsole.Instance.OutputFormat("Running: {0}", m_udpServer.OqrEngine.IsRunning); | 869 | MainConsole.Instance.OutputFormat("Running: {0}", m_udpServer.OqrEngine.IsRunning); |
870 | MainConsole.Instance.OutputFormat( | 870 | MainConsole.Instance.OutputFormat( |
871 | "Requests waiting: {0}", | 871 | "Requests waiting: {0}", |
872 | m_udpServer.OqrEngine.IsRunning ? m_udpServer.OqrEngine.JobsWaiting.ToString() : "n/a"); | 872 | m_udpServer.OqrEngine.IsRunning ? m_udpServer.OqrEngine.JobsWaiting.ToString() : "n/a"); |
873 | } | 873 | } |
874 | else | 874 | else |
875 | { | 875 | { |
876 | MainConsole.Instance.OutputFormat("Unrecognized OQRE subcommand {0}", subCommand); | 876 | MainConsole.Instance.OutputFormat("Unrecognized OQRE subcommand {0}", subCommand); |
877 | } | 877 | } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs index 831381e..35a0711 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/OpenSimUDPBase.cs | |||
@@ -3,25 +3,25 @@ | |||
3 | * Original Author: Jeff Cesnik | 3 | * Original Author: Jeff Cesnik |
4 | * All rights reserved. | 4 | * All rights reserved. |
5 | * | 5 | * |
6 | * - Redistribution and use in source and binary forms, with or without | 6 | * - Redistribution and use in source and binary forms, with or without |
7 | * modification, are permitted provided that the following conditions are met: | 7 | * modification, are permitted provided that the following conditions are met: |
8 | * | 8 | * |
9 | * - Redistributions of source code must retain the above copyright notice, this | 9 | * - Redistributions of source code must retain the above copyright notice, this |
10 | * list of conditions and the following disclaimer. | 10 | * list of conditions and the following disclaimer. |
11 | * - Neither the name of the openmetaverse.org nor the names | 11 | * - Neither the name of the openmetaverse.org nor the names |
12 | * of its contributors may be used to endorse or promote products derived from | 12 | * of its contributors may be used to endorse or promote products derived from |
13 | * this software without specific prior written permission. | 13 | * this software without specific prior written permission. |
14 | * | 14 | * |
15 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 15 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
16 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 16 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
17 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 17 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
18 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | 18 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
19 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 19 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
20 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 20 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
21 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 21 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
22 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 22 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
23 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 23 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
24 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 24 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
25 | * POSSIBILITY OF SUCH DAMAGE. | 25 | * POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
@@ -107,10 +107,10 @@ namespace OpenMetaverse | |||
107 | /// </summary> | 107 | /// </summary> |
108 | public float AverageReceiveTicksForLastSamplePeriod { get; private set; } | 108 | public float AverageReceiveTicksForLastSamplePeriod { get; private set; } |
109 | 109 | ||
110 | public int Port | 110 | public int Port |
111 | { | 111 | { |
112 | get { return m_udpPort; } | 112 | get { return m_udpPort; } |
113 | } | 113 | } |
114 | 114 | ||
115 | #region PacketDropDebugging | 115 | #region PacketDropDebugging |
116 | /// <summary> | 116 | /// <summary> |
@@ -118,7 +118,7 @@ namespace OpenMetaverse | |||
118 | /// outbound packets. | 118 | /// outbound packets. |
119 | /// </summary> | 119 | /// </summary> |
120 | private Random m_dropRandomGenerator = new Random(); | 120 | private Random m_dropRandomGenerator = new Random(); |
121 | 121 | ||
122 | /// <summary> | 122 | /// <summary> |
123 | /// For debugging purposes only... parameters for a simplified | 123 | /// For debugging purposes only... parameters for a simplified |
124 | /// model of packet loss with bursts, overall drop rate should | 124 | /// model of packet loss with bursts, overall drop rate should |
@@ -137,7 +137,7 @@ namespace OpenMetaverse | |||
137 | /// </summary> | 137 | /// </summary> |
138 | private int m_dropLastTick = 0; | 138 | private int m_dropLastTick = 0; |
139 | private int m_dropResetTicks = 500; | 139 | private int m_dropResetTicks = 500; |
140 | 140 | ||
141 | /// <summary> | 141 | /// <summary> |
142 | /// Debugging code used to simulate dropped packets with bursts | 142 | /// Debugging code used to simulate dropped packets with bursts |
143 | /// </summary> | 143 | /// </summary> |
@@ -187,13 +187,13 @@ namespace OpenMetaverse | |||
187 | ~OpenSimUDPBase() | 187 | ~OpenSimUDPBase() |
188 | { | 188 | { |
189 | if(m_udpSocket !=null) | 189 | if(m_udpSocket !=null) |
190 | try { m_udpSocket.Close(); } catch { } | 190 | try { m_udpSocket.Close(); } catch { } |
191 | } | 191 | } |
192 | /// <summary> | 192 | /// <summary> |
193 | /// Start inbound UDP packet handling. | 193 | /// Start inbound UDP packet handling. |
194 | /// </summary> | 194 | /// </summary> |
195 | /// <param name="recvBufferSize">The size of the receive buffer for | 195 | /// <param name="recvBufferSize">The size of the receive buffer for |
196 | /// the UDP socket. This value is passed up to the operating system | 196 | /// the UDP socket. This value is passed up to the operating system |
197 | /// and used in the system networking stack. Use zero to leave this | 197 | /// and used in the system networking stack. Use zero to leave this |
198 | /// value as the default</param> | 198 | /// value as the default</param> |
199 | /// <param name="asyncPacketHandling">Set this to true to start | 199 | /// <param name="asyncPacketHandling">Set this to true to start |
@@ -235,7 +235,7 @@ namespace OpenMetaverse | |||
235 | } | 235 | } |
236 | try | 236 | try |
237 | { | 237 | { |
238 | // This udp socket flag is not supported under mono, | 238 | // This udp socket flag is not supported under mono, |
239 | // so we'll catch the exception and continue | 239 | // so we'll catch the exception and continue |
240 | m_udpSocket.IOControl(SIO_UDP_CONNRESET, new byte[] { 0 }, null); | 240 | m_udpSocket.IOControl(SIO_UDP_CONNRESET, new byte[] { 0 }, null); |
241 | m_log.Debug("[UDPBASE]: SIO_UDP_CONNRESET flag set"); | 241 | m_log.Debug("[UDPBASE]: SIO_UDP_CONNRESET flag set"); |
@@ -249,12 +249,12 @@ namespace OpenMetaverse | |||
249 | // we never want two regions to listen on the same port as they cannot demultiplex each other's messages, | 249 | // we never want two regions to listen on the same port as they cannot demultiplex each other's messages, |
250 | // leading to a confusing bug. | 250 | // leading to a confusing bug. |
251 | // By default, Windows does not allow two sockets to bind to the same port. | 251 | // By default, Windows does not allow two sockets to bind to the same port. |
252 | // | 252 | // |
253 | // Unfortunately, this also causes a crashed sim to leave the socket in a state | 253 | // Unfortunately, this also causes a crashed sim to leave the socket in a state |
254 | // where it appears to be in use but is really just hung from the old process | 254 | // where it appears to be in use but is really just hung from the old process |
255 | // crashing rather than closing it. While this protects agains misconfiguration, | 255 | // crashing rather than closing it. While this protects agains misconfiguration, |
256 | // allowing crashed sims to be started up again right away, rather than having to | 256 | // allowing crashed sims to be started up again right away, rather than having to |
257 | // wait 2 minutes for the socket to clear is more valuable. Commented 12/13/2016 | 257 | // wait 2 minutes for the socket to clear is more valuable. Commented 12/13/2016 |
258 | // m_udpSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, false); | 258 | // m_udpSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, false); |
259 | 259 | ||
260 | if (recvBufferSize != 0) | 260 | if (recvBufferSize != 0) |
@@ -262,8 +262,8 @@ namespace OpenMetaverse | |||
262 | 262 | ||
263 | m_udpSocket.Bind(ipep); | 263 | m_udpSocket.Bind(ipep); |
264 | 264 | ||
265 | if (m_udpPort == 0) | 265 | if (m_udpPort == 0) |
266 | m_udpPort = ((IPEndPoint)m_udpSocket.LocalEndPoint).Port; | 266 | m_udpPort = ((IPEndPoint)m_udpSocket.LocalEndPoint).Port; |
267 | 267 | ||
268 | IsRunningInbound = true; | 268 | IsRunningInbound = true; |
269 | 269 | ||
@@ -334,7 +334,7 @@ namespace OpenMetaverse | |||
334 | { | 334 | { |
335 | UDPPacketBuffer buf; | 335 | UDPPacketBuffer buf; |
336 | 336 | ||
337 | // FIXME: Disabled for now as this causes issues with reused packet objects interfering with each other | 337 | // FIXME: Disabled for now as this causes issues with reused packet objects interfering with each other |
338 | // on Windows with m_asyncPacketHandling = true, though this has not been seen on Linux. | 338 | // on Windows with m_asyncPacketHandling = true, though this has not been seen on Linux. |
339 | // Possibly some unexpected issue with fetching UDP data concurrently with multiple threads. Requires more investigation. | 339 | // Possibly some unexpected issue with fetching UDP data concurrently with multiple threads. Requires more investigation. |
340 | // if (UsePools) | 340 | // if (UsePools) |
@@ -387,8 +387,8 @@ namespace OpenMetaverse | |||
387 | m_log.Warn("[UDPBASE]: Salvaged the UDP listener on port " + m_udpPort); | 387 | m_log.Warn("[UDPBASE]: Salvaged the UDP listener on port " + m_udpPort); |
388 | } | 388 | } |
389 | } | 389 | } |
390 | catch (ObjectDisposedException e) | 390 | catch (ObjectDisposedException e) |
391 | { | 391 | { |
392 | m_log.Error( | 392 | m_log.Error( |
393 | string.Format("[UDPBASE]: Error processing UDP begin receive {0}. Exception ", UdpReceives), e); | 393 | string.Format("[UDPBASE]: Error processing UDP begin receive {0}. Exception ", UdpReceives), e); |
394 | } | 394 | } |
@@ -434,7 +434,7 @@ namespace OpenMetaverse | |||
434 | // since this should be rare and won't cause a runtime problem. | 434 | // since this should be rare and won't cause a runtime problem. |
435 | if (m_currentReceiveTimeSamples >= s_receiveTimeSamples) | 435 | if (m_currentReceiveTimeSamples >= s_receiveTimeSamples) |
436 | { | 436 | { |
437 | AverageReceiveTicksForLastSamplePeriod | 437 | AverageReceiveTicksForLastSamplePeriod |
438 | = (float)m_receiveTicksInCurrentSamplePeriod / s_receiveTimeSamples; | 438 | = (float)m_receiveTicksInCurrentSamplePeriod / s_receiveTimeSamples; |
439 | 439 | ||
440 | m_receiveTicksInCurrentSamplePeriod = 0; | 440 | m_receiveTicksInCurrentSamplePeriod = 0; |
@@ -446,16 +446,16 @@ namespace OpenMetaverse | |||
446 | m_currentReceiveTimeSamples++; | 446 | m_currentReceiveTimeSamples++; |
447 | } | 447 | } |
448 | } | 448 | } |
449 | catch (SocketException se) | 449 | catch (SocketException se) |
450 | { | 450 | { |
451 | m_log.Error( | 451 | m_log.Error( |
452 | string.Format( | 452 | string.Format( |
453 | "[UDPBASE]: Error processing UDP end receive {0}, socket error code {1}. Exception ", | 453 | "[UDPBASE]: Error processing UDP end receive {0}, socket error code {1}. Exception ", |
454 | UdpReceives, se.ErrorCode), | 454 | UdpReceives, se.ErrorCode), |
455 | se); | 455 | se); |
456 | } | 456 | } |
457 | catch (ObjectDisposedException e) | 457 | catch (ObjectDisposedException e) |
458 | { | 458 | { |
459 | m_log.Error( | 459 | m_log.Error( |
460 | string.Format("[UDPBASE]: Error processing UDP end receive {0}. Exception ", UdpReceives), e); | 460 | string.Format("[UDPBASE]: Error processing UDP end receive {0}. Exception ", UdpReceives), e); |
461 | } | 461 | } |
@@ -486,7 +486,7 @@ namespace OpenMetaverse | |||
486 | // packets when testing throttles & retransmission code | 486 | // packets when testing throttles & retransmission code |
487 | // if (DropOutgoingPacket()) | 487 | // if (DropOutgoingPacket()) |
488 | // return; | 488 | // return; |
489 | 489 | ||
490 | try | 490 | try |
491 | { | 491 | { |
492 | m_udpSocket.BeginSendTo( | 492 | m_udpSocket.BeginSendTo( |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/PacketPool.cs b/OpenSim/Region/ClientStack/Linden/UDP/PacketPool.cs index 5a2bcee..f585bea 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/PacketPool.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/PacketPool.cs | |||
@@ -62,7 +62,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
62 | /// </summary> | 62 | /// </summary> |
63 | public int PacketsPooled | 63 | public int PacketsPooled |
64 | { | 64 | { |
65 | get | 65 | get |
66 | { | 66 | { |
67 | lock (pool) | 67 | lock (pool) |
68 | return pool.Count; | 68 | return pool.Count; |
@@ -74,9 +74,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
74 | /// </summary> | 74 | /// </summary> |
75 | public int BlocksPooled | 75 | public int BlocksPooled |
76 | { | 76 | { |
77 | get | 77 | get |
78 | { | 78 | { |
79 | lock (DataBlocks) | 79 | lock (DataBlocks) |
80 | return DataBlocks.Count; | 80 | return DataBlocks.Count; |
81 | } | 81 | } |
82 | } | 82 | } |
@@ -248,7 +248,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
248 | } | 248 | } |
249 | } | 249 | } |
250 | break; | 250 | break; |
251 | 251 | ||
252 | // Other packets wont pool | 252 | // Other packets wont pool |
253 | default: | 253 | default: |
254 | return; | 254 | return; |
@@ -276,7 +276,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
276 | { | 276 | { |
277 | DataBlocks[typeof(T)] = new Stack<Object>(); | 277 | DataBlocks[typeof(T)] = new Stack<Object>(); |
278 | } | 278 | } |
279 | 279 | ||
280 | return new T(); | 280 | return new T(); |
281 | } | 281 | } |
282 | } | 282 | } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/Properties/AssemblyInfo.cs b/OpenSim/Region/ClientStack/Linden/UDP/Properties/AssemblyInfo.cs index 1443477..4a8f16d 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/Properties/AssemblyInfo.cs | |||
@@ -3,7 +3,7 @@ using System.Runtime.CompilerServices; | |||
3 | using System.Runtime.InteropServices; | 3 | using System.Runtime.InteropServices; |
4 | using Mono.Addins; | 4 | using Mono.Addins; |
5 | 5 | ||
6 | // General Information about an assembly is controlled through the following | 6 | // General Information about an assembly is controlled through the following |
7 | // set of attributes. Change these attribute values to modify the information | 7 | // set of attributes. Change these attribute values to modify the information |
8 | // associated with an assembly. | 8 | // associated with an assembly. |
9 | [assembly: AssemblyTitle("OpenSim.Region.ClientStack.LindenUDP")] | 9 | [assembly: AssemblyTitle("OpenSim.Region.ClientStack.LindenUDP")] |
@@ -15,8 +15,8 @@ using Mono.Addins; | |||
15 | [assembly: AssemblyTrademark("")] | 15 | [assembly: AssemblyTrademark("")] |
16 | [assembly: AssemblyCulture("")] | 16 | [assembly: AssemblyCulture("")] |
17 | 17 | ||
18 | // Setting ComVisible to false makes the types in this assembly not visible | 18 | // Setting ComVisible to false makes the types in this assembly not visible |
19 | // to COM components. If you need to access a type in this assembly from | 19 | // to COM components. If you need to access a type in this assembly from |
20 | // COM, set the ComVisible attribute to true on that type. | 20 | // COM, set the ComVisible attribute to true on that type. |
21 | [assembly: ComVisible(false)] | 21 | [assembly: ComVisible(false)] |
22 | 22 | ||
@@ -26,7 +26,7 @@ using Mono.Addins; | |||
26 | // Version information for an assembly consists of the following four values: | 26 | // Version information for an assembly consists of the following four values: |
27 | // | 27 | // |
28 | // Major Version | 28 | // Major Version |
29 | // Minor Version | 29 | // Minor Version |
30 | // Build Number | 30 | // Build Number |
31 | // Revision | 31 | // Revision |
32 | // | 32 | // |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs b/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs index a935dd2..0e1a9e3 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/Tests/BasicCircuitTests.cs | |||
@@ -70,7 +70,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
70 | m_scene = new SceneHelpers().SetupScene(); | 70 | m_scene = new SceneHelpers().SetupScene(); |
71 | StatsManager.SimExtraStats = new SimExtraStatsCollector(); | 71 | StatsManager.SimExtraStats = new SimExtraStatsCollector(); |
72 | } | 72 | } |
73 | 73 | ||
74 | // /// <summary> | 74 | // /// <summary> |
75 | // /// Build an object name packet for test purposes | 75 | // /// Build an object name packet for test purposes |
76 | // /// </summary> | 76 | // /// </summary> |
@@ -84,7 +84,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
84 | // odb.Name = Utils.StringToBytes(objectName); | 84 | // odb.Name = Utils.StringToBytes(objectName); |
85 | // onp.ObjectData = new ObjectNamePacket.ObjectDataBlock[] { odb }; | 85 | // onp.ObjectData = new ObjectNamePacket.ObjectDataBlock[] { odb }; |
86 | // onp.Header.Zerocoded = false; | 86 | // onp.Header.Zerocoded = false; |
87 | // | 87 | // |
88 | // return onp; | 88 | // return onp; |
89 | // } | 89 | // } |
90 | // | 90 | // |
@@ -156,7 +156,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
156 | config.Set("AckTimeout", -1); | 156 | config.Set("AckTimeout", -1); |
157 | TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(m_scene, ics); | 157 | TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(m_scene, ics); |
158 | 158 | ||
159 | ScenePresence sp | 159 | ScenePresence sp |
160 | = ClientStackHelpers.AddChildClient( | 160 | = ClientStackHelpers.AddChildClient( |
161 | m_scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); | 161 | m_scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); |
162 | 162 | ||
@@ -175,21 +175,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
175 | // TestHelper.InMethod(); | 175 | // TestHelper.InMethod(); |
176 | // | 176 | // |
177 | // uint myCircuitCode = 123457; | 177 | // uint myCircuitCode = 123457; |
178 | // | 178 | // |
179 | // TestLLUDPServer testLLUDPServer; | 179 | // TestLLUDPServer testLLUDPServer; |
180 | // TestLLPacketServer testLLPacketServer; | 180 | // TestLLPacketServer testLLPacketServer; |
181 | // AgentCircuitManager acm; | 181 | // AgentCircuitManager acm; |
182 | // SetupStack(new MockScene(), out testLLUDPServer, out testLLPacketServer, out acm); | 182 | // SetupStack(new MockScene(), out testLLUDPServer, out testLLPacketServer, out acm); |
183 | // AddClient(myCircuitCode, new IPEndPoint(IPAddress.Loopback, 1000), testLLUDPServer, acm); | 183 | // AddClient(myCircuitCode, new IPEndPoint(IPAddress.Loopback, 1000), testLLUDPServer, acm); |
184 | // | 184 | // |
185 | // testLLUDPServer.RemoveClientCircuit(myCircuitCode); | 185 | // testLLUDPServer.RemoveClientCircuit(myCircuitCode); |
186 | // Assert.IsFalse(testLLUDPServer.HasCircuit(myCircuitCode)); | 186 | // Assert.IsFalse(testLLUDPServer.HasCircuit(myCircuitCode)); |
187 | // | 187 | // |
188 | // // Check that removing a non-existent circuit doesn't have any bad effects | 188 | // // Check that removing a non-existent circuit doesn't have any bad effects |
189 | // testLLUDPServer.RemoveClientCircuit(101); | 189 | // testLLUDPServer.RemoveClientCircuit(101); |
190 | // Assert.IsFalse(testLLUDPServer.HasCircuit(101)); | 190 | // Assert.IsFalse(testLLUDPServer.HasCircuit(101)); |
191 | // } | 191 | // } |
192 | // | 192 | // |
193 | // /// <summary> | 193 | // /// <summary> |
194 | // /// Make sure that the client stack reacts okay to malformed packets | 194 | // /// Make sure that the client stack reacts okay to malformed packets |
195 | // /// </summary> | 195 | // /// </summary> |
@@ -200,8 +200,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
200 | // | 200 | // |
201 | // uint myCircuitCode = 123458; | 201 | // uint myCircuitCode = 123458; |
202 | // EndPoint testEp = new IPEndPoint(IPAddress.Loopback, 1001); | 202 | // EndPoint testEp = new IPEndPoint(IPAddress.Loopback, 1001); |
203 | // MockScene scene = new MockScene(); | 203 | // MockScene scene = new MockScene(); |
204 | // | 204 | // |
205 | // TestLLUDPServer testLLUDPServer; | 205 | // TestLLUDPServer testLLUDPServer; |
206 | // TestLLPacketServer testLLPacketServer; | 206 | // TestLLPacketServer testLLPacketServer; |
207 | // AgentCircuitManager acm; | 207 | // AgentCircuitManager acm; |
@@ -213,24 +213,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
213 | // // Send two garbled 'packets' in succession | 213 | // // Send two garbled 'packets' in succession |
214 | // testLLUDPServer.LoadReceive(data, testEp); | 214 | // testLLUDPServer.LoadReceive(data, testEp); |
215 | // testLLUDPServer.LoadReceive(data, testEp); | 215 | // testLLUDPServer.LoadReceive(data, testEp); |
216 | // testLLUDPServer.ReceiveData(null); | 216 | // testLLUDPServer.ReceiveData(null); |
217 | // | 217 | // |
218 | // // Check that we are still here | 218 | // // Check that we are still here |
219 | // Assert.IsTrue(testLLUDPServer.HasCircuit(myCircuitCode)); | 219 | // Assert.IsTrue(testLLUDPServer.HasCircuit(myCircuitCode)); |
220 | // Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(0)); | 220 | // Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(0)); |
221 | // | 221 | // |
222 | // // Check that sending a valid packet to same circuit still succeeds | 222 | // // Check that sending a valid packet to same circuit still succeeds |
223 | // Assert.That(scene.ObjectNameCallsReceived, Is.EqualTo(0)); | 223 | // Assert.That(scene.ObjectNameCallsReceived, Is.EqualTo(0)); |
224 | // | 224 | // |
225 | // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "helloooo"), testEp); | 225 | // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "helloooo"), testEp); |
226 | // testLLUDPServer.ReceiveData(null); | 226 | // testLLUDPServer.ReceiveData(null); |
227 | // | 227 | // |
228 | // Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(1)); | 228 | // Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(1)); |
229 | // Assert.That(testLLPacketServer.GetPacketsReceivedFor(PacketType.ObjectName), Is.EqualTo(1)); | 229 | // Assert.That(testLLPacketServer.GetPacketsReceivedFor(PacketType.ObjectName), Is.EqualTo(1)); |
230 | // } | 230 | // } |
231 | // | 231 | // |
232 | // /// <summary> | 232 | // /// <summary> |
233 | // /// Test that the stack continues to work even if some client has caused a | 233 | // /// Test that the stack continues to work even if some client has caused a |
234 | // /// SocketException on Socket.BeginReceive() | 234 | // /// SocketException on Socket.BeginReceive() |
235 | // /// </summary> | 235 | // /// </summary> |
236 | // [Test] | 236 | // [Test] |
@@ -239,32 +239,32 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
239 | // TestHelper.InMethod(); | 239 | // TestHelper.InMethod(); |
240 | // | 240 | // |
241 | // MockScene scene = new MockScene(); | 241 | // MockScene scene = new MockScene(); |
242 | // | 242 | // |
243 | // uint circuitCodeA = 130000; | 243 | // uint circuitCodeA = 130000; |
244 | // EndPoint epA = new IPEndPoint(IPAddress.Loopback, 1300); | 244 | // EndPoint epA = new IPEndPoint(IPAddress.Loopback, 1300); |
245 | // UUID agentIdA = UUID.Parse("00000000-0000-0000-0000-000000001300"); | 245 | // UUID agentIdA = UUID.Parse("00000000-0000-0000-0000-000000001300"); |
246 | // UUID sessionIdA = UUID.Parse("00000000-0000-0000-0000-000000002300"); | 246 | // UUID sessionIdA = UUID.Parse("00000000-0000-0000-0000-000000002300"); |
247 | // | 247 | // |
248 | // uint circuitCodeB = 130001; | 248 | // uint circuitCodeB = 130001; |
249 | // EndPoint epB = new IPEndPoint(IPAddress.Loopback, 1301); | 249 | // EndPoint epB = new IPEndPoint(IPAddress.Loopback, 1301); |
250 | // UUID agentIdB = UUID.Parse("00000000-0000-0000-0000-000000001301"); | 250 | // UUID agentIdB = UUID.Parse("00000000-0000-0000-0000-000000001301"); |
251 | // UUID sessionIdB = UUID.Parse("00000000-0000-0000-0000-000000002301"); | 251 | // UUID sessionIdB = UUID.Parse("00000000-0000-0000-0000-000000002301"); |
252 | // | 252 | // |
253 | // TestLLUDPServer testLLUDPServer; | 253 | // TestLLUDPServer testLLUDPServer; |
254 | // TestLLPacketServer testLLPacketServer; | 254 | // TestLLPacketServer testLLPacketServer; |
255 | // AgentCircuitManager acm; | 255 | // AgentCircuitManager acm; |
256 | // SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm); | 256 | // SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm); |
257 | // AddClient(circuitCodeA, epA, agentIdA, sessionIdA, testLLUDPServer, acm); | 257 | // AddClient(circuitCodeA, epA, agentIdA, sessionIdA, testLLUDPServer, acm); |
258 | // AddClient(circuitCodeB, epB, agentIdB, sessionIdB, testLLUDPServer, acm); | 258 | // AddClient(circuitCodeB, epB, agentIdB, sessionIdB, testLLUDPServer, acm); |
259 | // | 259 | // |
260 | // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "packet1"), epA); | 260 | // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "packet1"), epA); |
261 | // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "packet2"), epB); | 261 | // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(1, "packet2"), epB); |
262 | // testLLUDPServer.LoadReceiveWithBeginException(epA); | 262 | // testLLUDPServer.LoadReceiveWithBeginException(epA); |
263 | // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(2, "packet3"), epB); | 263 | // testLLUDPServer.LoadReceive(BuildTestObjectNamePacket(2, "packet3"), epB); |
264 | // testLLUDPServer.ReceiveData(null); | 264 | // testLLUDPServer.ReceiveData(null); |
265 | // | 265 | // |
266 | // Assert.IsFalse(testLLUDPServer.HasCircuit(circuitCodeA)); | 266 | // Assert.IsFalse(testLLUDPServer.HasCircuit(circuitCodeA)); |
267 | // | 267 | // |
268 | // Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(3)); | 268 | // Assert.That(testLLPacketServer.GetTotalPacketsReceived(), Is.EqualTo(3)); |
269 | // Assert.That(testLLPacketServer.GetPacketsReceivedFor(PacketType.ObjectName), Is.EqualTo(3)); | 269 | // Assert.That(testLLPacketServer.GetPacketsReceivedFor(PacketType.ObjectName), Is.EqualTo(3)); |
270 | // } | 270 | // } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/Tests/PacketHandlerTests.cs b/OpenSim/Region/ClientStack/Linden/UDP/Tests/PacketHandlerTests.cs index 92f1fc3..1731aa9 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/Tests/PacketHandlerTests.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/Tests/PacketHandlerTests.cs | |||
@@ -59,7 +59,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
59 | // agent.InventoryFolder = UUID.Zero; | 59 | // agent.InventoryFolder = UUID.Zero; |
60 | // agent.startpos = Vector3.Zero; | 60 | // agent.startpos = Vector3.Zero; |
61 | // agent.CapsPath = "http://wibble.com"; | 61 | // agent.CapsPath = "http://wibble.com"; |
62 | // | 62 | // |
63 | // TestLLUDPServer testLLUDPServer; | 63 | // TestLLUDPServer testLLUDPServer; |
64 | // TestLLPacketServer testLLPacketServer; | 64 | // TestLLPacketServer testLLPacketServer; |
65 | // AgentCircuitManager acm; | 65 | // AgentCircuitManager acm; |
@@ -67,7 +67,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
67 | // SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm); | 67 | // SetupStack(scene, out testLLUDPServer, out testLLPacketServer, out acm); |
68 | // | 68 | // |
69 | // TestClient testClient = new TestClient(agent, scene); | 69 | // TestClient testClient = new TestClient(agent, scene); |
70 | // | 70 | // |
71 | // LLPacketHandler packetHandler | 71 | // LLPacketHandler packetHandler |
72 | // = new LLPacketHandler(testClient, testLLPacketServer, new ClientStackUserSettings()); | 72 | // = new LLPacketHandler(testClient, testLLPacketServer, new ClientStackUserSettings()); |
73 | // | 73 | // |
@@ -87,14 +87,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
87 | // /// <param name="testPacketServer"></param> | 87 | // /// <param name="testPacketServer"></param> |
88 | // /// <param name="acm">Agent circuit manager used in setting up the stack</param> | 88 | // /// <param name="acm">Agent circuit manager used in setting up the stack</param> |
89 | // protected void SetupStack( | 89 | // protected void SetupStack( |
90 | // IScene scene, out TestLLUDPServer testLLUDPServer, out TestLLPacketServer testPacketServer, | 90 | // IScene scene, out TestLLUDPServer testLLUDPServer, out TestLLPacketServer testPacketServer, |
91 | // out AgentCircuitManager acm) | 91 | // out AgentCircuitManager acm) |
92 | // { | 92 | // { |
93 | // IConfigSource configSource = new IniConfigSource(); | 93 | // IConfigSource configSource = new IniConfigSource(); |
94 | // ClientStackUserSettings userSettings = new ClientStackUserSettings(); | 94 | // ClientStackUserSettings userSettings = new ClientStackUserSettings(); |
95 | // testLLUDPServer = new TestLLUDPServer(); | 95 | // testLLUDPServer = new TestLLUDPServer(); |
96 | // acm = new AgentCircuitManager(); | 96 | // acm = new AgentCircuitManager(); |
97 | // | 97 | // |
98 | // uint port = 666; | 98 | // uint port = 666; |
99 | // testLLUDPServer.Initialise(null, ref port, 0, false, configSource, acm); | 99 | // testLLUDPServer.Initialise(null, ref port, 0, false, configSource, acm); |
100 | // testPacketServer = new TestLLPacketServer(testLLUDPServer, userSettings); | 100 | // testPacketServer = new TestLLPacketServer(testLLUDPServer, userSettings); |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/Tests/ThrottleTests.cs b/OpenSim/Region/ClientStack/Linden/UDP/Tests/ThrottleTests.cs index 5e41dbd..873b1e5 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/Tests/ThrottleTests.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/Tests/ThrottleTests.cs | |||
@@ -137,7 +137,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
137 | Scene scene = new SceneHelpers().SetupScene(); | 137 | Scene scene = new SceneHelpers().SetupScene(); |
138 | TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(scene); | 138 | TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(scene); |
139 | 139 | ||
140 | ScenePresence sp | 140 | ScenePresence sp |
141 | = ClientStackHelpers.AddChildClient( | 141 | = ClientStackHelpers.AddChildClient( |
142 | scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); | 142 | scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); |
143 | 143 | ||
@@ -145,7 +145,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
145 | 145 | ||
146 | udpServer.Throttle.DebugLevel = 1; | 146 | udpServer.Throttle.DebugLevel = 1; |
147 | udpClient.ThrottleDebugLevel = 1; | 147 | udpClient.ThrottleDebugLevel = 1; |
148 | 148 | ||
149 | int resendBytes = 1000; | 149 | int resendBytes = 1000; |
150 | int landBytes = 2000; | 150 | int landBytes = 2000; |
151 | int windBytes = 3000; | 151 | int windBytes = 3000; |
@@ -161,8 +161,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
161 | int totalBytes = LLUDPServer.MTU + landBytes + windBytes + cloudBytes + taskBytes + textureBytes + assetBytes; | 161 | int totalBytes = LLUDPServer.MTU + landBytes + windBytes + cloudBytes + taskBytes + textureBytes + assetBytes; |
162 | 162 | ||
163 | AssertThrottles( | 163 | AssertThrottles( |
164 | udpClient, | 164 | udpClient, |
165 | LLUDPServer.MTU, landBytes, windBytes, cloudBytes, taskBytes, | 165 | LLUDPServer.MTU, landBytes, windBytes, cloudBytes, taskBytes, |
166 | textureBytes, assetBytes, totalBytes, 0, 0); | 166 | textureBytes, assetBytes, totalBytes, 0, 0); |
167 | } | 167 | } |
168 | 168 | ||
@@ -181,7 +181,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
181 | 181 | ||
182 | TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(scene, ics); | 182 | TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(scene, ics); |
183 | 183 | ||
184 | ScenePresence sp | 184 | ScenePresence sp |
185 | = ClientStackHelpers.AddChildClient( | 185 | = ClientStackHelpers.AddChildClient( |
186 | scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); | 186 | scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); |
187 | 187 | ||
@@ -207,7 +207,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
207 | double commitRatio = 32000.0 / totalBytes; | 207 | double commitRatio = 32000.0 / totalBytes; |
208 | 208 | ||
209 | AssertThrottles( | 209 | AssertThrottles( |
210 | udpClient, | 210 | udpClient, |
211 | LLUDPServer.MTU, landBytes * commitRatio, windBytes * commitRatio, cloudBytes * commitRatio, taskBytes * commitRatio, | 211 | LLUDPServer.MTU, landBytes * commitRatio, windBytes * commitRatio, cloudBytes * commitRatio, taskBytes * commitRatio, |
212 | textureBytes * commitRatio, assetBytes * commitRatio, udpClient.FlowThrottle.AdjustedDripRate, totalBytes, 0); | 212 | textureBytes * commitRatio, assetBytes * commitRatio, udpClient.FlowThrottle.AdjustedDripRate, totalBytes, 0); |
213 | 213 | ||
@@ -217,7 +217,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
217 | commitRatio = (32000.0 + 20.0 * LLUDPServer.MTU) / totalBytes; | 217 | commitRatio = (32000.0 + 20.0 * LLUDPServer.MTU) / totalBytes; |
218 | 218 | ||
219 | AssertThrottles( | 219 | AssertThrottles( |
220 | udpClient, | 220 | udpClient, |
221 | LLUDPServer.MTU, landBytes * commitRatio, windBytes * commitRatio, cloudBytes * commitRatio, taskBytes * commitRatio, | 221 | LLUDPServer.MTU, landBytes * commitRatio, windBytes * commitRatio, cloudBytes * commitRatio, taskBytes * commitRatio, |
222 | textureBytes * commitRatio, assetBytes * commitRatio, udpClient.FlowThrottle.AdjustedDripRate, totalBytes, 0); | 222 | textureBytes * commitRatio, assetBytes * commitRatio, udpClient.FlowThrottle.AdjustedDripRate, totalBytes, 0); |
223 | 223 | ||
@@ -227,7 +227,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
227 | commitRatio = (32000.0 + (20.0 * LLUDPServer.MTU)/Math.Pow(2,1)) / totalBytes; | 227 | commitRatio = (32000.0 + (20.0 * LLUDPServer.MTU)/Math.Pow(2,1)) / totalBytes; |
228 | 228 | ||
229 | AssertThrottles( | 229 | AssertThrottles( |
230 | udpClient, | 230 | udpClient, |
231 | LLUDPServer.MTU, landBytes * commitRatio, windBytes * commitRatio, cloudBytes * commitRatio, taskBytes * commitRatio, | 231 | LLUDPServer.MTU, landBytes * commitRatio, windBytes * commitRatio, cloudBytes * commitRatio, taskBytes * commitRatio, |
232 | textureBytes * commitRatio, assetBytes * commitRatio, udpClient.FlowThrottle.AdjustedDripRate, totalBytes, 0); | 232 | textureBytes * commitRatio, assetBytes * commitRatio, udpClient.FlowThrottle.AdjustedDripRate, totalBytes, 0); |
233 | } | 233 | } |
@@ -248,14 +248,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
248 | int taskBytes = 14000; | 248 | int taskBytes = 14000; |
249 | int textureBytes = 16000; | 249 | int textureBytes = 16000; |
250 | int assetBytes = 18000; | 250 | int assetBytes = 18000; |
251 | int totalBytes | 251 | int totalBytes |
252 | = (int)((resendBytes + landBytes + windBytes + cloudBytes + taskBytes + textureBytes + assetBytes) / 2); | 252 | = (int)((resendBytes + landBytes + windBytes + cloudBytes + taskBytes + textureBytes + assetBytes) / 2); |
253 | 253 | ||
254 | Scene scene = new SceneHelpers().SetupScene(); | 254 | Scene scene = new SceneHelpers().SetupScene(); |
255 | TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(scene); | 255 | TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(scene); |
256 | udpServer.Throttle.RequestedDripRate = totalBytes; | 256 | udpServer.Throttle.RequestedDripRate = totalBytes; |
257 | 257 | ||
258 | ScenePresence sp1 | 258 | ScenePresence sp1 |
259 | = ClientStackHelpers.AddChildClient( | 259 | = ClientStackHelpers.AddChildClient( |
260 | scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); | 260 | scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); |
261 | 261 | ||
@@ -265,8 +265,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
265 | udpClient1, resendBytes, landBytes, windBytes, cloudBytes, taskBytes, textureBytes, assetBytes); | 265 | udpClient1, resendBytes, landBytes, windBytes, cloudBytes, taskBytes, textureBytes, assetBytes); |
266 | 266 | ||
267 | AssertThrottles( | 267 | AssertThrottles( |
268 | udpClient1, | 268 | udpClient1, |
269 | resendBytes / 2, landBytes / 2, windBytes / 2, cloudBytes / 2, taskBytes / 2, | 269 | resendBytes / 2, landBytes / 2, windBytes / 2, cloudBytes / 2, taskBytes / 2, |
270 | textureBytes / 2, assetBytes / 2, totalBytes, 0, 0); | 270 | textureBytes / 2, assetBytes / 2, totalBytes, 0, 0); |
271 | 271 | ||
272 | // Test: Now add another client | 272 | // Test: Now add another client |
@@ -281,13 +281,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
281 | udpClient2, resendBytes, landBytes, windBytes, cloudBytes, taskBytes, textureBytes, assetBytes); | 281 | udpClient2, resendBytes, landBytes, windBytes, cloudBytes, taskBytes, textureBytes, assetBytes); |
282 | 282 | ||
283 | AssertThrottles( | 283 | AssertThrottles( |
284 | udpClient1, | 284 | udpClient1, |
285 | resendBytes / 4, landBytes / 4, windBytes / 4, cloudBytes / 4, taskBytes / 4, | 285 | resendBytes / 4, landBytes / 4, windBytes / 4, cloudBytes / 4, taskBytes / 4, |
286 | textureBytes / 4, assetBytes / 4, totalBytes / 2, 0, 0); | 286 | textureBytes / 4, assetBytes / 4, totalBytes / 2, 0, 0); |
287 | 287 | ||
288 | AssertThrottles( | 288 | AssertThrottles( |
289 | udpClient2, | 289 | udpClient2, |
290 | resendBytes / 4, landBytes / 4, windBytes / 4, cloudBytes / 4, taskBytes / 4, | 290 | resendBytes / 4, landBytes / 4, windBytes / 4, cloudBytes / 4, taskBytes / 4, |
291 | textureBytes / 4, assetBytes / 4, totalBytes / 2, 0, 0); | 291 | textureBytes / 4, assetBytes / 4, totalBytes / 2, 0, 0); |
292 | } | 292 | } |
293 | 293 | ||
@@ -307,14 +307,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
307 | int taskBytes = 12000; | 307 | int taskBytes = 12000; |
308 | int textureBytes = 14000; | 308 | int textureBytes = 14000; |
309 | int assetBytes = 16000; | 309 | int assetBytes = 16000; |
310 | int totalBytes | 310 | int totalBytes |
311 | = (int)((resendBytes + landBytes + windBytes + cloudBytes + taskBytes + textureBytes + assetBytes) / 2); | 311 | = (int)((resendBytes + landBytes + windBytes + cloudBytes + taskBytes + textureBytes + assetBytes) / 2); |
312 | 312 | ||
313 | Scene scene = new SceneHelpers().SetupScene(); | 313 | Scene scene = new SceneHelpers().SetupScene(); |
314 | TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(scene); | 314 | TestLLUDPServer udpServer = ClientStackHelpers.AddUdpServer(scene); |
315 | udpServer.ThrottleRates.Total = totalBytes; | 315 | udpServer.ThrottleRates.Total = totalBytes; |
316 | 316 | ||
317 | ScenePresence sp | 317 | ScenePresence sp |
318 | = ClientStackHelpers.AddChildClient( | 318 | = ClientStackHelpers.AddChildClient( |
319 | scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); | 319 | scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); |
320 | 320 | ||
@@ -325,8 +325,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
325 | udpClient, resendBytes, landBytes, windBytes, cloudBytes, taskBytes, textureBytes, assetBytes); | 325 | udpClient, resendBytes, landBytes, windBytes, cloudBytes, taskBytes, textureBytes, assetBytes); |
326 | 326 | ||
327 | AssertThrottles( | 327 | AssertThrottles( |
328 | udpClient, | 328 | udpClient, |
329 | resendBytes / 2, landBytes / 2, windBytes / 2, cloudBytes / 2, taskBytes / 2, | 329 | resendBytes / 2, landBytes / 2, windBytes / 2, cloudBytes / 2, taskBytes / 2, |
330 | textureBytes / 2, assetBytes / 2, totalBytes, 0, totalBytes); | 330 | textureBytes / 2, assetBytes / 2, totalBytes, 0, totalBytes); |
331 | } | 331 | } |
332 | 332 | ||
@@ -352,7 +352,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
352 | udpServer.ThrottleRates.Total = (int)(totalBytes * 1.1); | 352 | udpServer.ThrottleRates.Total = (int)(totalBytes * 1.1); |
353 | udpServer.Throttle.RequestedDripRate = (int)(totalBytes * 1.5); | 353 | udpServer.Throttle.RequestedDripRate = (int)(totalBytes * 1.5); |
354 | 354 | ||
355 | ScenePresence sp1 | 355 | ScenePresence sp1 |
356 | = ClientStackHelpers.AddChildClient( | 356 | = ClientStackHelpers.AddChildClient( |
357 | scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); | 357 | scene, udpServer, TestHelpers.ParseTail(0x1), TestHelpers.ParseTail(0x2), 123456); |
358 | 358 | ||
@@ -363,8 +363,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
363 | udpClient1, resendBytes, landBytes, windBytes, cloudBytes, taskBytes, textureBytes, assetBytes); | 363 | udpClient1, resendBytes, landBytes, windBytes, cloudBytes, taskBytes, textureBytes, assetBytes); |
364 | 364 | ||
365 | AssertThrottles( | 365 | AssertThrottles( |
366 | udpClient1, | 366 | udpClient1, |
367 | resendBytes, landBytes, windBytes, cloudBytes, taskBytes, | 367 | resendBytes, landBytes, windBytes, cloudBytes, taskBytes, |
368 | textureBytes, assetBytes, totalBytes, 0, totalBytes * 1.1); | 368 | textureBytes, assetBytes, totalBytes, 0, totalBytes * 1.1); |
369 | 369 | ||
370 | // Now add another client | 370 | // Now add another client |
@@ -379,25 +379,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests | |||
379 | udpClient2, resendBytes, landBytes, windBytes, cloudBytes, taskBytes, textureBytes, assetBytes); | 379 | udpClient2, resendBytes, landBytes, windBytes, cloudBytes, taskBytes, textureBytes, assetBytes); |
380 | 380 | ||
381 | AssertThrottles( | 381 | AssertThrottles( |
382 | udpClient1, | 382 | udpClient1, |
383 | resendBytes * 0.75, landBytes * 0.75, windBytes * 0.75, cloudBytes * 0.75, taskBytes * 0.75, | 383 | resendBytes * 0.75, landBytes * 0.75, windBytes * 0.75, cloudBytes * 0.75, taskBytes * 0.75, |
384 | textureBytes * 0.75, assetBytes * 0.75, totalBytes * 0.75, 0, totalBytes * 1.1); | 384 | textureBytes * 0.75, assetBytes * 0.75, totalBytes * 0.75, 0, totalBytes * 1.1); |
385 | 385 | ||
386 | AssertThrottles( | 386 | AssertThrottles( |
387 | udpClient2, | 387 | udpClient2, |
388 | resendBytes * 0.75, landBytes * 0.75, windBytes * 0.75, cloudBytes * 0.75, taskBytes * 0.75, | 388 | resendBytes * 0.75, landBytes * 0.75, windBytes * 0.75, cloudBytes * 0.75, taskBytes * 0.75, |
389 | textureBytes * 0.75, assetBytes * 0.75, totalBytes * 0.75, 0, totalBytes * 1.1); | 389 | textureBytes * 0.75, assetBytes * 0.75, totalBytes * 0.75, 0, totalBytes * 1.1); |
390 | } | 390 | } |
391 | 391 | ||
392 | private void AssertThrottles( | 392 | private void AssertThrottles( |
393 | LLUDPClient udpClient, | 393 | LLUDPClient udpClient, |
394 | double resendBytes, double landBytes, double windBytes, double cloudBytes, double taskBytes, double textureBytes, double assetBytes, | 394 | double resendBytes, double landBytes, double windBytes, double cloudBytes, double taskBytes, double textureBytes, double assetBytes, |
395 | double totalBytes, double targetBytes, double maxBytes) | 395 | double totalBytes, double targetBytes, double maxBytes) |
396 | { | 396 | { |
397 | ClientInfo ci = udpClient.GetClientInfo(); | 397 | ClientInfo ci = udpClient.GetClientInfo(); |
398 | 398 | ||
399 | // Console.WriteLine( | 399 | // Console.WriteLine( |
400 | // "Resend={0}, Land={1}, Wind={2}, Cloud={3}, Task={4}, Texture={5}, Asset={6}, TOTAL = {7}", | 400 | // "Resend={0}, Land={1}, Wind={2}, Cloud={3}, Task={4}, Texture={5}, Asset={6}, TOTAL = {7}", |
401 | // ci.resendThrottle, ci.landThrottle, ci.windThrottle, ci.cloudThrottle, ci.taskThrottle, ci.textureThrottle, ci.assetThrottle, ci.totalThrottle); | 401 | // ci.resendThrottle, ci.landThrottle, ci.windThrottle, ci.cloudThrottle, ci.taskThrottle, ci.textureThrottle, ci.assetThrottle, ci.totalThrottle); |
402 | 402 | ||
403 | Assert.AreEqual((int)resendBytes, ci.resendThrottle, "Resend"); | 403 | Assert.AreEqual((int)resendBytes, ci.resendThrottle, "Resend"); |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/ThrottleRates.cs b/OpenSim/Region/ClientStack/Linden/UDP/ThrottleRates.cs index 6278e36..f8ec97a 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/ThrottleRates.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/ThrottleRates.cs | |||
@@ -58,14 +58,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
58 | 58 | ||
59 | /// <summary>Flag used to enable adaptive throttles</summary> | 59 | /// <summary>Flag used to enable adaptive throttles</summary> |
60 | public bool AdaptiveThrottlesEnabled; | 60 | public bool AdaptiveThrottlesEnabled; |
61 | 61 | ||
62 | /// <summary> | 62 | /// <summary> |
63 | /// Set the minimum rate that the adaptive throttles can set. The viewer | 63 | /// Set the minimum rate that the adaptive throttles can set. The viewer |
64 | /// can still throttle lower than this, but the adaptive throttles will | 64 | /// can still throttle lower than this, but the adaptive throttles will |
65 | /// never decrease rates below this no matter how many packets are dropped | 65 | /// never decrease rates below this no matter how many packets are dropped |
66 | /// </summary> | 66 | /// </summary> |
67 | public Int64 MinimumAdaptiveThrottleRate; | 67 | public Int64 MinimumAdaptiveThrottleRate; |
68 | 68 | ||
69 | /// <summary>Amount of the texture throttle to steal for the task throttle</summary> | 69 | /// <summary>Amount of the texture throttle to steal for the task throttle</summary> |
70 | public double CannibalizeTextureRate; | 70 | public double CannibalizeTextureRate; |
71 | 71 | ||
@@ -109,7 +109,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
109 | // CannibalizeTextureRate = (double)throttleConfig.GetFloat("CannibalizeTextureRate", 0.0f); | 109 | // CannibalizeTextureRate = (double)throttleConfig.GetFloat("CannibalizeTextureRate", 0.0f); |
110 | // CannibalizeTextureRate = Util.Clamp<double>(CannibalizeTextureRate,0.0, 0.9); | 110 | // CannibalizeTextureRate = Util.Clamp<double>(CannibalizeTextureRate,0.0, 0.9); |
111 | CannibalizeTextureRate = 0f; | 111 | CannibalizeTextureRate = 0f; |
112 | 112 | ||
113 | } | 113 | } |
114 | catch (Exception) { } | 114 | catch (Exception) { } |
115 | } | 115 | } |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/TokenBucket.cs b/OpenSim/Region/ClientStack/Linden/UDP/TokenBucket.cs index cac57b2..1daf091 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/TokenBucket.cs | |||
@@ -44,24 +44,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
44 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 44 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
45 | 45 | ||
46 | private static Int32 m_counter = 0; | 46 | private static Int32 m_counter = 0; |
47 | 47 | ||
48 | // private Int32 m_identifier; | 48 | // private Int32 m_identifier; |
49 | 49 | ||
50 | protected const float m_timeScale = 1e-3f; | 50 | protected const float m_timeScale = 1e-3f; |
51 | 51 | ||
52 | /// <summary> | 52 | /// <summary> |
53 | /// This is the number of m_minimumDripRate bytes | 53 | /// This is the number of m_minimumDripRate bytes |
54 | /// allowed in a burst | 54 | /// allowed in a burst |
55 | /// roughtly, with this settings, the maximum time system will take | 55 | /// roughtly, with this settings, the maximum time system will take |
56 | /// to recheck a bucket in ms | 56 | /// to recheck a bucket in ms |
57 | /// | 57 | /// |
58 | /// </summary> | 58 | /// </summary> |
59 | protected const float m_quantumsPerBurst = 5; | 59 | protected const float m_quantumsPerBurst = 5; |
60 | 60 | ||
61 | /// <summary> | 61 | /// <summary> |
62 | /// </summary> | 62 | /// </summary> |
63 | protected const float m_minimumDripRate = 1500; | 63 | protected const float m_minimumDripRate = 1500; |
64 | 64 | ||
65 | /// <summary>Time of the last drip</summary> | 65 | /// <summary>Time of the last drip</summary> |
66 | protected double m_lastDrip; | 66 | protected double m_lastDrip; |
67 | 67 | ||
@@ -76,7 +76,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
76 | /// </summary> | 76 | /// </summary> |
77 | 77 | ||
78 | protected Dictionary<TokenBucket, float> m_children = new Dictionary<TokenBucket, float>(); | 78 | protected Dictionary<TokenBucket, float> m_children = new Dictionary<TokenBucket, float>(); |
79 | 79 | ||
80 | #region Properties | 80 | #region Properties |
81 | 81 | ||
82 | /// <summary> | 82 | /// <summary> |
@@ -92,7 +92,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
92 | } | 92 | } |
93 | /// <summary> | 93 | /// <summary> |
94 | /// This is the maximum number | 94 | /// This is the maximum number |
95 | /// of tokens that can accumulate in the bucket at any one time. This | 95 | /// of tokens that can accumulate in the bucket at any one time. This |
96 | /// also sets the total request for leaf nodes | 96 | /// also sets the total request for leaf nodes |
97 | /// </summary> | 97 | /// </summary> |
98 | protected float m_burst; | 98 | protected float m_burst; |
@@ -127,14 +127,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
127 | return (float)rate; | 127 | return (float)rate; |
128 | } | 128 | } |
129 | } | 129 | } |
130 | 130 | ||
131 | /// <summary> | 131 | /// <summary> |
132 | /// The requested drip rate for this particular bucket. | 132 | /// The requested drip rate for this particular bucket. |
133 | /// </summary> | 133 | /// </summary> |
134 | /// <remarks> | 134 | /// <remarks> |
135 | /// 0 then TotalDripRequest is used instead. | 135 | /// 0 then TotalDripRequest is used instead. |
136 | /// Can never be above MaxDripRate. | 136 | /// Can never be above MaxDripRate. |
137 | /// Tokens are added to the bucket at any time | 137 | /// Tokens are added to the bucket at any time |
138 | /// <seealso cref="RemoveTokens"/> is called, at the granularity of | 138 | /// <seealso cref="RemoveTokens"/> is called, at the granularity of |
139 | /// the system tick interval (typically around 15-22ms)</remarks> | 139 | /// the system tick interval (typically around 15-22ms)</remarks> |
140 | protected float m_dripRate; | 140 | protected float m_dripRate; |
@@ -170,12 +170,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
170 | /// The current total of the requested maximum burst rates of children buckets. | 170 | /// The current total of the requested maximum burst rates of children buckets. |
171 | /// </summary> | 171 | /// </summary> |
172 | protected float m_totalDripRequest; | 172 | protected float m_totalDripRequest; |
173 | public float TotalDripRequest | 173 | public float TotalDripRequest |
174 | { | 174 | { |
175 | get { return m_totalDripRequest; } | 175 | get { return m_totalDripRequest; } |
176 | set { m_totalDripRequest = value; } | 176 | set { m_totalDripRequest = value; } |
177 | } | 177 | } |
178 | 178 | ||
179 | #endregion Properties | 179 | #endregion Properties |
180 | 180 | ||
181 | #region Constructor | 181 | #region Constructor |
@@ -191,7 +191,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
191 | /// zero if this bucket has no maximum capacity</param> | 191 | /// zero if this bucket has no maximum capacity</param> |
192 | /// <param name="dripRate">Rate that the bucket fills, in bytes per | 192 | /// <param name="dripRate">Rate that the bucket fills, in bytes per |
193 | /// second. If zero, the bucket always remains full</param> | 193 | /// second. If zero, the bucket always remains full</param> |
194 | public TokenBucket(TokenBucket parent, float dripRate, float MaxBurst) | 194 | public TokenBucket(TokenBucket parent, float dripRate, float MaxBurst) |
195 | { | 195 | { |
196 | m_counter++; | 196 | m_counter++; |
197 | 197 | ||
@@ -240,7 +240,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
240 | foreach (KeyValuePair<TokenBucket, float> cref in m_children) | 240 | foreach (KeyValuePair<TokenBucket, float> cref in m_children) |
241 | m_totalDripRequest += cref.Value; | 241 | m_totalDripRequest += cref.Value; |
242 | } | 242 | } |
243 | 243 | ||
244 | // Pass the new values up to the parent | 244 | // Pass the new values up to the parent |
245 | if (m_parent != null) | 245 | if (m_parent != null) |
246 | m_parent.RegisterRequest(this, Math.Min(RequestedDripRate, TotalDripRequest)); | 246 | m_parent.RegisterRequest(this, Math.Min(RequestedDripRate, TotalDripRequest)); |
@@ -265,7 +265,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
265 | if (Parent != null) | 265 | if (Parent != null) |
266 | Parent.RegisterRequest(this,Math.Min(RequestedDripRate, TotalDripRequest)); | 266 | Parent.RegisterRequest(this,Math.Min(RequestedDripRate, TotalDripRequest)); |
267 | } | 267 | } |
268 | 268 | ||
269 | /// <summary> | 269 | /// <summary> |
270 | /// Remove a given number of tokens from the bucket | 270 | /// Remove a given number of tokens from the bucket |
271 | /// </summary> | 271 | /// </summary> |
@@ -302,7 +302,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
302 | 302 | ||
303 | /// <summary> | 303 | /// <summary> |
304 | /// Add tokens to the bucket over time. The number of tokens added each | 304 | /// Add tokens to the bucket over time. The number of tokens added each |
305 | /// call depends on the length of time that has passed since the last | 305 | /// call depends on the length of time that has passed since the last |
306 | /// call to Drip | 306 | /// call to Drip |
307 | /// </summary> | 307 | /// </summary> |
308 | /// <returns>True if tokens were added to the bucket, otherwise false</returns> | 308 | /// <returns>True if tokens were added to the bucket, otherwise false</returns> |
@@ -315,7 +315,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
315 | m_log.WarnFormat("[TOKENBUCKET] something odd is happening and drip rate is 0 for {0}", m_counter); | 315 | m_log.WarnFormat("[TOKENBUCKET] something odd is happening and drip rate is 0 for {0}", m_counter); |
316 | return; | 316 | return; |
317 | } | 317 | } |
318 | 318 | ||
319 | double now = Util.GetTimeStampMS(); | 319 | double now = Util.GetTimeStampMS(); |
320 | double deltaMS = now - m_lastDrip; | 320 | double deltaMS = now - m_lastDrip; |
321 | m_lastDrip = now; | 321 | m_lastDrip = now; |
@@ -333,13 +333,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
333 | 333 | ||
334 | public class AdaptiveTokenBucket : TokenBucket | 334 | public class AdaptiveTokenBucket : TokenBucket |
335 | { | 335 | { |
336 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 336 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
337 | 337 | ||
338 | public bool AdaptiveEnabled { get; set; } | 338 | public bool AdaptiveEnabled { get; set; } |
339 | 339 | ||
340 | /// <summary> | 340 | /// <summary> |
341 | /// The minimum rate for flow control. Minimum drip rate is one | 341 | /// The minimum rate for flow control. Minimum drip rate is one |
342 | /// packet per second. | 342 | /// packet per second. |
343 | /// </summary> | 343 | /// </summary> |
344 | 344 | ||
345 | protected const float m_minimumFlow = 50000; | 345 | protected const float m_minimumFlow = 50000; |
@@ -361,7 +361,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
361 | private bool m_enabled = false; | 361 | private bool m_enabled = false; |
362 | 362 | ||
363 | // <summary> | 363 | // <summary> |
364 | // Adjust drip rate in response to network conditions. | 364 | // Adjust drip rate in response to network conditions. |
365 | // </summary> | 365 | // </summary> |
366 | public float AdjustedDripRate | 366 | public float AdjustedDripRate |
367 | { | 367 | { |
@@ -374,10 +374,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
374 | m_parent.RegisterRequest(this, m_dripRate); | 374 | m_parent.RegisterRequest(this, m_dripRate); |
375 | } | 375 | } |
376 | } | 376 | } |
377 | 377 | ||
378 | 378 | ||
379 | // <summary> | 379 | // <summary> |
380 | // | 380 | // |
381 | // </summary> | 381 | // </summary> |
382 | public AdaptiveTokenBucket(TokenBucket parent, float maxDripRate, float maxBurst, bool enabled) | 382 | public AdaptiveTokenBucket(TokenBucket parent, float maxDripRate, float maxBurst, bool enabled) |
383 | : base(parent, maxDripRate, maxBurst) | 383 | : base(parent, maxDripRate, maxBurst) |
@@ -393,7 +393,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
393 | if (m_parent != null) | 393 | if (m_parent != null) |
394 | m_parent.RegisterRequest(this, m_dripRate); | 394 | m_parent.RegisterRequest(this, m_dripRate); |
395 | } | 395 | } |
396 | 396 | ||
397 | /// <summary> | 397 | /// <summary> |
398 | /// Reliable packets sent to the client for which we never received an ack adjust the drip rate down. | 398 | /// Reliable packets sent to the client for which we never received an ack adjust the drip rate down. |
399 | /// <param name="packets">Number of packets that expired without successful delivery</param> | 399 | /// <param name="packets">Number of packets that expired without successful delivery</param> |
@@ -406,7 +406,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
406 | } | 406 | } |
407 | 407 | ||
408 | // <summary> | 408 | // <summary> |
409 | // | 409 | // |
410 | // </summary> | 410 | // </summary> |
411 | public void AcknowledgePackets(Int32 count) | 411 | public void AcknowledgePackets(Int32 count) |
412 | { | 412 | { |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/Linden/UDP/UnackedPacketCollection.cs index c9d5697..76f4c6f 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/UnackedPacketCollection.cs | |||
@@ -80,7 +80,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
80 | m_packets.Clear(); | 80 | m_packets.Clear(); |
81 | m_pendingAdds = null; | 81 | m_pendingAdds = null; |
82 | m_pendingAcknowledgements = null; | 82 | m_pendingAcknowledgements = null; |
83 | m_pendingRemoves = null; | 83 | m_pendingRemoves = null; |
84 | } | 84 | } |
85 | 85 | ||
86 | /// <summary> | 86 | /// <summary> |
@@ -94,7 +94,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
94 | public void Add(OutgoingPacket packet) | 94 | public void Add(OutgoingPacket packet) |
95 | { | 95 | { |
96 | m_pendingAdds.Enqueue(packet); | 96 | m_pendingAdds.Enqueue(packet); |
97 | Interlocked.Add(ref packet.Client.UnackedBytes, packet.Buffer.DataLength); | 97 | Interlocked.Add(ref packet.Client.UnackedBytes, packet.Buffer.DataLength); |
98 | } | 98 | } |
99 | 99 | ||
100 | /// <summary> | 100 | /// <summary> |
@@ -116,7 +116,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
116 | /// <summary> | 116 | /// <summary> |
117 | /// Marks a packet as no longer needing acknowledgement without a received acknowledgement. | 117 | /// Marks a packet as no longer needing acknowledgement without a received acknowledgement. |
118 | /// This method is called when a packet expires and we no longer need an acknowledgement. | 118 | /// This method is called when a packet expires and we no longer need an acknowledgement. |
119 | /// When some reliable packet types expire, they are handled in a way other than simply | 119 | /// When some reliable packet types expire, they are handled in a way other than simply |
120 | /// resending them. The only effect of removal this way is to update unacked byte count. | 120 | /// resending them. The only effect of removal this way is to update unacked byte count. |
121 | /// </summary> | 121 | /// </summary> |
122 | /// <param name="sequenceNumber">Sequence number of the packet to | 122 | /// <param name="sequenceNumber">Sequence number of the packet to |
@@ -155,7 +155,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
155 | 155 | ||
156 | foreach (OutgoingPacket packet in m_packets.Values) | 156 | foreach (OutgoingPacket packet in m_packets.Values) |
157 | { | 157 | { |
158 | // TickCount of zero means a packet is in the resend queue | 158 | // TickCount of zero means a packet is in the resend queue |
159 | // but hasn't actually been sent over the wire yet | 159 | // but hasn't actually been sent over the wire yet |
160 | if (packet.TickCount == 0) | 160 | if (packet.TickCount == 0) |
161 | continue; | 161 | continue; |
@@ -172,7 +172,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
172 | // As with other network applications, assume that an expired packet is | 172 | // As with other network applications, assume that an expired packet is |
173 | // an indication of some network problem, slow transmission | 173 | // an indication of some network problem, slow transmission |
174 | packet.Client.FlowThrottle.ExpirePackets(1); | 174 | packet.Client.FlowThrottle.ExpirePackets(1); |
175 | 175 | ||
176 | expiredPackets.Add(packet); | 176 | expiredPackets.Add(packet); |
177 | } | 177 | } |
178 | } | 178 | } |
@@ -191,7 +191,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
191 | while (m_pendingAdds.TryDequeue(out pendingAdd)) | 191 | while (m_pendingAdds.TryDequeue(out pendingAdd)) |
192 | if (pendingAdd != null) | 192 | if (pendingAdd != null) |
193 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; | 193 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; |
194 | 194 | ||
195 | // Process all the pending removes, including updating statistics and round-trip times | 195 | // Process all the pending removes, including updating statistics and round-trip times |
196 | PendingAck pendingAcknowledgement; | 196 | PendingAck pendingAcknowledgement; |
197 | while (m_pendingAcknowledgements.TryDequeue(out pendingAcknowledgement)) | 197 | while (m_pendingAcknowledgements.TryDequeue(out pendingAcknowledgement)) |
@@ -228,7 +228,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
228 | else | 228 | else |
229 | { | 229 | { |
230 | // m_log.WarnFormat("[UNACKED PACKET COLLECTION]: Could not find packet with sequence number {0} to ack", | 230 | // m_log.WarnFormat("[UNACKED PACKET COLLECTION]: Could not find packet with sequence number {0} to ack", |
231 | // pendingAcknowledgement.SequenceNumber); | 231 | // pendingAcknowledgement.SequenceNumber); |
232 | } | 232 | } |
233 | } | 233 | } |
234 | 234 | ||
diff --git a/OpenSim/Region/ClientStack/Properties/AssemblyInfo.cs b/OpenSim/Region/ClientStack/Properties/AssemblyInfo.cs index 0b6ee2f..e859653 100644 --- a/OpenSim/Region/ClientStack/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/ClientStack/Properties/AssemblyInfo.cs | |||
@@ -2,7 +2,7 @@ | |||
2 | using System.Runtime.CompilerServices; | 2 | using System.Runtime.CompilerServices; |
3 | using System.Runtime.InteropServices; | 3 | using System.Runtime.InteropServices; |
4 | 4 | ||
5 | // General Information about an assembly is controlled through the following | 5 | // General Information about an assembly is controlled through the following |
6 | // set of attributes. Change these attribute values to modify the information | 6 | // set of attributes. Change these attribute values to modify the information |
7 | // associated with an assembly. | 7 | // associated with an assembly. |
8 | [assembly: AssemblyTitle("OpenSim.Region.ClientStack")] | 8 | [assembly: AssemblyTitle("OpenSim.Region.ClientStack")] |
@@ -14,8 +14,8 @@ using System.Runtime.InteropServices; | |||
14 | [assembly: AssemblyTrademark("")] | 14 | [assembly: AssemblyTrademark("")] |
15 | [assembly: AssemblyCulture("")] | 15 | [assembly: AssemblyCulture("")] |
16 | 16 | ||
17 | // Setting ComVisible to false makes the types in this assembly not visible | 17 | // Setting ComVisible to false makes the types in this assembly not visible |
18 | // to COM components. If you need to access a type in this assembly from | 18 | // to COM components. If you need to access a type in this assembly from |
19 | // COM, set the ComVisible attribute to true on that type. | 19 | // COM, set the ComVisible attribute to true on that type. |
20 | [assembly: ComVisible(false)] | 20 | [assembly: ComVisible(false)] |
21 | 21 | ||
@@ -25,7 +25,7 @@ using System.Runtime.InteropServices; | |||
25 | // Version information for an assembly consists of the following four values: | 25 | // Version information for an assembly consists of the following four values: |
26 | // | 26 | // |
27 | // Major Version | 27 | // Major Version |
28 | // Minor Version | 28 | // Minor Version |
29 | // Build Number | 29 | // Build Number |
30 | // Revision | 30 | // Revision |
31 | // | 31 | // |