diff options
Diffstat (limited to 'OpenSim')
3 files changed, 39 insertions, 17 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs index ca5501d..31cc515 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPClient.cs | |||
@@ -169,7 +169,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
169 | /// <param name="circuitCode">Circuit code for this connection</param> | 169 | /// <param name="circuitCode">Circuit code for this connection</param> |
170 | /// <param name="agentID">AgentID for the connected agent</param> | 170 | /// <param name="agentID">AgentID for the connected agent</param> |
171 | /// <param name="remoteEndPoint">Remote endpoint for this connection</param> | 171 | /// <param name="remoteEndPoint">Remote endpoint for this connection</param> |
172 | public LLUDPClient(LLUDPServer server, ThrottleRates rates, TokenBucket parentThrottle, uint circuitCode, UUID agentID, IPEndPoint remoteEndPoint, int defaultRTO, int maxRTO) | 172 | /// <param name="defaultRTO"> |
173 | /// Default retransmission timeout for unacked packets. The RTO will never drop | ||
174 | /// beyond this number. | ||
175 | /// </param> | ||
176 | /// <param name="maxRTO"> | ||
177 | /// The maximum retransmission timeout for unacked packets. The RTO will never exceed this number. | ||
178 | /// </param> | ||
179 | public LLUDPClient( | ||
180 | LLUDPServer server, ThrottleRates rates, TokenBucket parentThrottle, uint circuitCode, UUID agentID, | ||
181 | IPEndPoint remoteEndPoint, int defaultRTO, int maxRTO) | ||
173 | { | 182 | { |
174 | AgentID = agentID; | 183 | AgentID = agentID; |
175 | RemoteEndPoint = remoteEndPoint; | 184 | RemoteEndPoint = remoteEndPoint; |
@@ -197,7 +206,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
197 | m_throttleCategories[i] = new TokenBucket(m_throttleCategory, rates.GetRate(type)); | 206 | m_throttleCategories[i] = new TokenBucket(m_throttleCategory, rates.GetRate(type)); |
198 | } | 207 | } |
199 | 208 | ||
200 | // Default the retransmission timeout to three seconds | 209 | // Default the retransmission timeout to one second |
201 | RTO = m_defaultRTO; | 210 | RTO = m_defaultRTO; |
202 | 211 | ||
203 | // Initialize this to a sane value to prevent early disconnects | 212 | // Initialize this to a sane value to prevent early disconnects |
@@ -262,9 +271,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
262 | /// <summary> | 271 | /// <summary> |
263 | /// Return statistics information about client packet queues. | 272 | /// Return statistics information about client packet queues. |
264 | /// </summary> | 273 | /// </summary> |
265 | /// | 274 | /// <remarks> |
266 | /// FIXME: This should really be done in a more sensible manner rather than sending back a formatted string. | 275 | /// FIXME: This should really be done in a more sensible manner rather than sending back a formatted string. |
267 | /// | 276 | /// </remarks> |
268 | /// <returns></returns> | 277 | /// <returns></returns> |
269 | public string GetStats() | 278 | public string GetStats() |
270 | { | 279 | { |
@@ -606,8 +615,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
606 | /// Does an early check to see if this queue empty callback is already | 615 | /// Does an early check to see if this queue empty callback is already |
607 | /// running, then asynchronously firing the event | 616 | /// running, then asynchronously firing the event |
608 | /// </summary> | 617 | /// </summary> |
609 | /// <param name="throttleIndex">Throttle category to fire the callback | 618 | /// <param name="categories">Throttle categories to fire the callback for</param> |
610 | /// for</param> | ||
611 | private void BeginFireQueueEmpty(ThrottleOutPacketTypeFlags categories) | 619 | private void BeginFireQueueEmpty(ThrottleOutPacketTypeFlags categories) |
612 | { | 620 | { |
613 | if (m_nextOnQueueEmpty != 0 && (Environment.TickCount & Int32.MaxValue) >= m_nextOnQueueEmpty) | 621 | if (m_nextOnQueueEmpty != 0 && (Environment.TickCount & Int32.MaxValue) >= m_nextOnQueueEmpty) |
@@ -694,4 +702,4 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
694 | } | 702 | } |
695 | } | 703 | } |
696 | } | 704 | } |
697 | } | 705 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs index 304efe6..ccad241 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs | |||
@@ -324,7 +324,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
324 | /// <param name="packet"></param> | 324 | /// <param name="packet"></param> |
325 | /// <param name="category"></param> | 325 | /// <param name="category"></param> |
326 | /// <param name="allowSplitting"></param> | 326 | /// <param name="allowSplitting"></param> |
327 | public void SendPacket(LLUDPClient udpClient, Packet packet, ThrottleOutPacketType category, bool allowSplitting, UnackedPacketMethod method) | 327 | /// <param name="method"> |
328 | /// The method to call if the packet is not acked by the client. If null, then a standard | ||
329 | /// resend of the packet is done. | ||
330 | /// </param> | ||
331 | public void SendPacket( | ||
332 | LLUDPClient udpClient, Packet packet, ThrottleOutPacketType category, bool allowSplitting, UnackedPacketMethod method) | ||
328 | { | 333 | { |
329 | // CoarseLocationUpdate packets cannot be split in an automated way | 334 | // CoarseLocationUpdate packets cannot be split in an automated way |
330 | if (packet.Type == PacketType.CoarseLocationUpdate && allowSplitting) | 335 | if (packet.Type == PacketType.CoarseLocationUpdate && allowSplitting) |
@@ -357,8 +362,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
357 | /// <param name="udpClient"></param> | 362 | /// <param name="udpClient"></param> |
358 | /// <param name="data"></param> | 363 | /// <param name="data"></param> |
359 | /// <param name="type"></param> | 364 | /// <param name="type"></param> |
360 | /// <param name="category"></param> | 365 | /// <param name="category"></param> |
361 | public void SendPacketData(LLUDPClient udpClient, byte[] data, PacketType type, ThrottleOutPacketType category, UnackedPacketMethod method) | 366 | /// <param name="method"> |
367 | /// The method to call if the packet is not acked by the client. If null, then a standard | ||
368 | /// resend of the packet is done. | ||
369 | /// </param> | ||
370 | public void SendPacketData( | ||
371 | LLUDPClient udpClient, byte[] data, PacketType type, ThrottleOutPacketType category, UnackedPacketMethod method) | ||
362 | { | 372 | { |
363 | int dataLength = data.Length; | 373 | int dataLength = data.Length; |
364 | bool doZerocode = (data[0] & Helpers.MSG_ZEROCODED) != 0; | 374 | bool doZerocode = (data[0] & Helpers.MSG_ZEROCODED) != 0; |
@@ -1100,7 +1110,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1100 | { | 1110 | { |
1101 | m_log.Error("[LLUDPSERVER]: OutgoingPacketHandler loop threw an exception: " + ex.Message, ex); | 1111 | m_log.Error("[LLUDPSERVER]: OutgoingPacketHandler loop threw an exception: " + ex.Message, ex); |
1102 | } | 1112 | } |
1103 | |||
1104 | } | 1113 | } |
1105 | 1114 | ||
1106 | Watchdog.RemoveThread(); | 1115 | Watchdog.RemoveThread(); |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/Linden/UDP/UnackedPacketCollection.cs index 793aefe..6b1d7d2 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/UnackedPacketCollection.cs | |||
@@ -118,12 +118,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
118 | /// Returns a list of all of the packets with a TickCount older than | 118 | /// Returns a list of all of the packets with a TickCount older than |
119 | /// the specified timeout | 119 | /// the specified timeout |
120 | /// </summary> | 120 | /// </summary> |
121 | /// <remarks> | ||
122 | /// This function is not thread safe, and cannot be called | ||
123 | /// multiple times concurrently | ||
124 | /// </remarks> | ||
121 | /// <param name="timeoutMS">Number of ticks (milliseconds) before a | 125 | /// <param name="timeoutMS">Number of ticks (milliseconds) before a |
122 | /// packet is considered expired</param> | 126 | /// packet is considered expired |
123 | /// <returns>A list of all expired packets according to the given | 127 | /// </param> |
124 | /// expiration timeout</returns> | 128 | /// <returns> |
125 | /// <remarks>This function is not thread safe, and cannot be called | 129 | /// A list of all expired packets according to the given |
126 | /// multiple times concurrently</remarks> | 130 | /// expiration timeout |
131 | /// </returns> | ||
127 | public List<OutgoingPacket> GetExpiredPackets(int timeoutMS) | 132 | public List<OutgoingPacket> GetExpiredPackets(int timeoutMS) |
128 | { | 133 | { |
129 | ProcessQueues(); | 134 | ProcessQueues(); |
@@ -216,4 +221,4 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
216 | } | 221 | } |
217 | } | 222 | } |
218 | } | 223 | } |
219 | } | 224 | } \ No newline at end of file |