diff options
Diffstat (limited to 'OpenSim')
4 files changed, 38 insertions, 23 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index e43f7cf..c19e6a2 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
@@ -139,28 +139,43 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
139 | private void ProcessQueues() | 139 | private void ProcessQueues() |
140 | { | 140 | { |
141 | // Process all the pending adds | 141 | // Process all the pending adds |
142 | OutgoingPacket pendingAdd; | ||
143 | while (m_pendingAdds.Dequeue(out pendingAdd)) | ||
144 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; | ||
145 | 142 | ||
143 | OutgoingPacket pendingAdd; | ||
144 | if (m_pendingAdds != null) | ||
145 | { | ||
146 | while (m_pendingAdds.TryDequeue(out pendingAdd)) | ||
147 | { | ||
148 | if (pendingAdd != null && m_packets != null) | ||
149 | { | ||
150 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; | ||
151 | } | ||
152 | } | ||
153 | } | ||
154 | |||
146 | // Process all the pending removes, including updating statistics and round-trip times | 155 | // Process all the pending removes, including updating statistics and round-trip times |
147 | PendingAck pendingRemove; | 156 | PendingAck pendingRemove; |
148 | OutgoingPacket ackedPacket; | 157 | OutgoingPacket ackedPacket; |
149 | while (m_pendingRemoves.Dequeue(out pendingRemove)) | 158 | if (m_pendingRemoves != null) |
150 | { | 159 | { |
151 | if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) | 160 | while (m_pendingRemoves.TryDequeue(out pendingRemove)) |
152 | { | 161 | { |
153 | m_packets.Remove(pendingRemove.SequenceNumber); | 162 | if (m_pendingRemoves != null && m_packets != null) |
154 | |||
155 | // Update stats | ||
156 | System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); | ||
157 | |||
158 | if (!pendingRemove.FromResend) | ||
159 | { | 163 | { |
160 | // Calculate the round-trip time for this packet and its ACK | 164 | if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) |
161 | int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; | 165 | { |
162 | if (rtt > 0) | 166 | m_packets.Remove(pendingRemove.SequenceNumber); |
163 | ackedPacket.Client.UpdateRoundTrip(rtt); | 167 | |
168 | // Update stats | ||
169 | System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); | ||
170 | |||
171 | if (!pendingRemove.FromResend) | ||
172 | { | ||
173 | // Calculate the round-trip time for this packet and its ACK | ||
174 | int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; | ||
175 | if (rtt > 0) | ||
176 | ackedPacket.Client.UpdateRoundTrip(rtt); | ||
177 | } | ||
178 | } | ||
164 | } | 179 | } |
165 | } | 180 | } |
166 | } | 181 | } |
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index 9eaa758..6ed4867 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs | |||
@@ -252,7 +252,7 @@ namespace Flotsam.RegionModules.AssetCache | |||
252 | } | 252 | } |
253 | else | 253 | else |
254 | { | 254 | { |
255 | m_MemoryCache.AddOrUpdate(key, asset, DateTime.MaxValue); | 255 | m_MemoryCache.AddOrUpdate(key, asset, Double.MaxValue); |
256 | } | 256 | } |
257 | } | 257 | } |
258 | } | 258 | } |
@@ -863,4 +863,4 @@ namespace Flotsam.RegionModules.AssetCache | |||
863 | 863 | ||
864 | #endregion | 864 | #endregion |
865 | } | 865 | } |
866 | } \ No newline at end of file | 866 | } |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs index 7c12b8c..e7cfda1 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/UserAccounts/UserAccountCache.cs | |||
@@ -53,9 +53,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.UserAccounts | |||
53 | public void Cache(UUID userID, UserAccount account) | 53 | public void Cache(UUID userID, UserAccount account) |
54 | { | 54 | { |
55 | // Cache even null accounts | 55 | // Cache even null accounts |
56 | m_UUIDCache.AddOrUpdate(userID, account, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); | 56 | m_UUIDCache.AddOrUpdate(userID, account, CACHE_EXPIRATION_SECONDS); |
57 | if (account != null) | 57 | if (account != null) |
58 | m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); | 58 | m_NameCache.AddOrUpdate(account.Name, account.PrincipalID, CACHE_EXPIRATION_SECONDS); |
59 | 59 | ||
60 | m_log.DebugFormat("[USER CACHE]: cached user {0}", userID); | 60 | m_log.DebugFormat("[USER CACHE]: cached user {0}", userID); |
61 | } | 61 | } |
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs index ddd2322..9c150ee 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs | |||
@@ -147,7 +147,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
147 | if (account == null) | 147 | if (account == null) |
148 | { | 148 | { |
149 | // Store null responses too, to avoid repeated lookups for missing accounts | 149 | // Store null responses too, to avoid repeated lookups for missing accounts |
150 | m_accountCache.AddOrUpdate(userID, null, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); | 150 | m_accountCache.AddOrUpdate(userID, null, CACHE_EXPIRATION_SECONDS); |
151 | } | 151 | } |
152 | 152 | ||
153 | return account; | 153 | return account; |
@@ -225,7 +225,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
225 | if (success) | 225 | if (success) |
226 | { | 226 | { |
227 | // Cache the user account info | 227 | // Cache the user account info |
228 | m_accountCache.AddOrUpdate(data.PrincipalID, data, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); | 228 | m_accountCache.AddOrUpdate(data.PrincipalID, data, CACHE_EXPIRATION_SECONDS); |
229 | } | 229 | } |
230 | else | 230 | else |
231 | { | 231 | { |
@@ -290,7 +290,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
290 | GetFirstLastName(response["Name"].AsString(), out account.FirstName, out account.LastName); | 290 | GetFirstLastName(response["Name"].AsString(), out account.FirstName, out account.LastName); |
291 | 291 | ||
292 | // Cache the user account info | 292 | // Cache the user account info |
293 | m_accountCache.AddOrUpdate(account.PrincipalID, account, DateTime.Now + TimeSpan.FromSeconds(CACHE_EXPIRATION_SECONDS)); | 293 | m_accountCache.AddOrUpdate(account.PrincipalID, account, CACHE_EXPIRATION_SECONDS); |
294 | 294 | ||
295 | return account; | 295 | return account; |
296 | } | 296 | } |