diff options
Diffstat (limited to 'OpenSim/Region/ClientStack/ClientView.PacketQueue.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.PacketQueue.cs | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs b/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs index 5cd30ce..efeff29 100644 --- a/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs +++ b/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs | |||
@@ -32,13 +32,12 @@ using System.Net.Sockets; | |||
32 | using System.Timers; | 32 | using System.Timers; |
33 | using libsecondlife; | 33 | using libsecondlife; |
34 | using libsecondlife.Packets; | 34 | using libsecondlife.Packets; |
35 | using OpenSim.Framework.Console; | ||
36 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
37 | using OpenSim.Region.Environment; | 36 | using OpenSim.Framework.Console; |
38 | 37 | ||
39 | namespace OpenSim.Region.ClientStack | 38 | namespace OpenSim.Region.ClientStack |
40 | { | 39 | { |
41 | public partial class ClientView | 40 | public partial class ClientView |
42 | { | 41 | { |
43 | protected BlockingQueue<QueItem> PacketQueue; | 42 | protected BlockingQueue<QueItem> PacketQueue; |
44 | protected Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>(); | 43 | protected Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>(); |
@@ -84,7 +83,7 @@ namespace OpenSim.Region.ClientStack | |||
84 | Pack.Header.Sequence = Sequence; | 83 | Pack.Header.Sequence = Sequence; |
85 | } | 84 | } |
86 | 85 | ||
87 | if (Pack.Header.Reliable) //DIRTY HACK | 86 | if (Pack.Header.Reliable) //DIRTY HACK |
88 | { | 87 | { |
89 | lock (NeedAck) | 88 | lock (NeedAck) |
90 | { | 89 | { |
@@ -148,19 +147,21 @@ namespace OpenSim.Region.ClientStack | |||
148 | if (Pack.Header.Zerocoded) | 147 | if (Pack.Header.Zerocoded) |
149 | { | 148 | { |
150 | int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer); | 149 | int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer); |
151 | m_networkServer.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, m_circuitCode);//userEP); | 150 | m_networkServer.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, m_circuitCode); //userEP); |
152 | } | 151 | } |
153 | else | 152 | else |
154 | { | 153 | { |
155 | m_networkServer.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, m_circuitCode); //userEP); | 154 | m_networkServer.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, m_circuitCode); |
155 | //userEP); | ||
156 | } | 156 | } |
157 | } | 157 | } |
158 | catch (Exception) | 158 | catch (Exception) |
159 | { | 159 | { |
160 | MainLog.Instance.Warn("client", "OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " + userEP.ToString() + " - killing thread"); | 160 | MainLog.Instance.Warn("client", |
161 | this.KillThread(); | 161 | "OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " + |
162 | userEP.ToString() + " - killing thread"); | ||
163 | KillThread(); | ||
162 | } | 164 | } |
163 | |||
164 | } | 165 | } |
165 | 166 | ||
166 | public virtual void InPacket(Packet NewPack) | 167 | public virtual void InPacket(Packet NewPack) |
@@ -180,7 +181,7 @@ namespace OpenSim.Region.ClientStack | |||
180 | // Handle PacketAck packets | 181 | // Handle PacketAck packets |
181 | if (NewPack.Type == PacketType.PacketAck) | 182 | if (NewPack.Type == PacketType.PacketAck) |
182 | { | 183 | { |
183 | PacketAckPacket ackPacket = (PacketAckPacket)NewPack; | 184 | PacketAckPacket ackPacket = (PacketAckPacket) NewPack; |
184 | 185 | ||
185 | lock (NeedAck) | 186 | lock (NeedAck) |
186 | { | 187 | { |
@@ -193,7 +194,7 @@ namespace OpenSim.Region.ClientStack | |||
193 | else if ((NewPack.Type == PacketType.StartPingCheck)) | 194 | else if ((NewPack.Type == PacketType.StartPingCheck)) |
194 | { | 195 | { |
195 | //reply to pingcheck | 196 | //reply to pingcheck |
196 | StartPingCheckPacket startPing = (StartPingCheckPacket)NewPack; | 197 | StartPingCheckPacket startPing = (StartPingCheckPacket) NewPack; |
197 | CompletePingCheckPacket endPing = new CompletePingCheckPacket(); | 198 | CompletePingCheckPacket endPing = new CompletePingCheckPacket(); |
198 | endPing.PingID.PingID = startPing.PingID.PingID; | 199 | endPing.PingID.PingID = startPing.PingID.PingID; |
199 | OutPacket(endPing); | 200 | OutPacket(endPing); |
@@ -203,9 +204,8 @@ namespace OpenSim.Region.ClientStack | |||
203 | QueItem item = new QueItem(); | 204 | QueItem item = new QueItem(); |
204 | item.Packet = NewPack; | 205 | item.Packet = NewPack; |
205 | item.Incoming = true; | 206 | item.Incoming = true; |
206 | this.PacketQueue.Enqueue(item); | 207 | PacketQueue.Enqueue(item); |
207 | } | 208 | } |
208 | |||
209 | } | 209 | } |
210 | 210 | ||
211 | public virtual void OutPacket(Packet NewPack) | 211 | public virtual void OutPacket(Packet NewPack) |
@@ -213,7 +213,7 @@ namespace OpenSim.Region.ClientStack | |||
213 | QueItem item = new QueItem(); | 213 | QueItem item = new QueItem(); |
214 | item.Packet = NewPack; | 214 | item.Packet = NewPack; |
215 | item.Incoming = false; | 215 | item.Incoming = false; |
216 | this.PacketQueue.Enqueue(item); | 216 | PacketQueue.Enqueue(item); |
217 | } | 217 | } |
218 | 218 | ||
219 | # region Low Level Packet Methods | 219 | # region Low Level Packet Methods |
@@ -229,7 +229,6 @@ namespace OpenSim.Region.ClientStack | |||
229 | ack_it.Header.Reliable = false; | 229 | ack_it.Header.Reliable = false; |
230 | 230 | ||
231 | OutPacket(ack_it); | 231 | OutPacket(ack_it); |
232 | |||
233 | } | 232 | } |
234 | /* | 233 | /* |
235 | if (Pack.Header.Reliable) | 234 | if (Pack.Header.Reliable) |
@@ -252,8 +251,8 @@ namespace OpenSim.Region.ClientStack | |||
252 | { | 251 | { |
253 | if ((now - packet.TickCount > RESEND_TIMEOUT) && (!packet.Header.Resent)) | 252 | if ((now - packet.TickCount > RESEND_TIMEOUT) && (!packet.Header.Resent)) |
254 | { | 253 | { |
255 | MainLog.Instance.Verbose( "Resending " + packet.Type.ToString() + " packet, " + | 254 | MainLog.Instance.Verbose("Resending " + packet.Type.ToString() + " packet, " + |
256 | (now - packet.TickCount) + "ms have passed"); | 255 | (now - packet.TickCount) + "ms have passed"); |
257 | 256 | ||
258 | packet.Header.Resent = true; | 257 | packet.Header.Resent = true; |
259 | OutPacket(packet); | 258 | OutPacket(packet); |
@@ -271,7 +270,7 @@ namespace OpenSim.Region.ClientStack | |||
271 | if (PendingAcks.Count > 250) | 270 | if (PendingAcks.Count > 250) |
272 | { | 271 | { |
273 | // FIXME: Handle the odd case where we have too many pending ACKs queued up | 272 | // FIXME: Handle the odd case where we have too many pending ACKs queued up |
274 | MainLog.Instance.Verbose( "Too many ACKs queued up!"); | 273 | MainLog.Instance.Verbose("Too many ACKs queued up!"); |
275 | return; | 274 | return; |
276 | } | 275 | } |
277 | 276 | ||
@@ -302,6 +301,7 @@ namespace OpenSim.Region.ClientStack | |||
302 | SendAcks(); | 301 | SendAcks(); |
303 | ResendUnacked(); | 302 | ResendUnacked(); |
304 | } | 303 | } |
304 | |||
305 | #endregion | 305 | #endregion |
306 | 306 | ||
307 | #region Nested Classes | 307 | #region Nested Classes |
@@ -315,6 +315,7 @@ namespace OpenSim.Region.ClientStack | |||
315 | public Packet Packet; | 315 | public Packet Packet; |
316 | public bool Incoming; | 316 | public bool Incoming; |
317 | } | 317 | } |
318 | |||
318 | #endregion | 319 | #endregion |
319 | } | 320 | } |
320 | } | 321 | } \ No newline at end of file |