aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs (unfollow)
Commit message (Collapse)AuthorFilesLines
2009-10-21* Change the OnQueueEmpty signature to send the flags of the queues that are ↵John Hurliman1-0/+5
empty instead of firing once per empty queue * Change the OnQueueEmpty firing to use a minimum time until next fire instead of a sleep * Set OutgoingPacket.TickCount = 0 earlier to avoid extra resends when things are running slowly (inside a profiler, for example)
2009-10-21* Clarified what FireQueueEmpty is doing with a MIN_CALLBACK_MS constant and ↵John Hurliman1-1/+1
upped it to 30ms * Removed the unused PacketSent() function * Switched UnackedPacketCollection from a SortedDictionary to a Dictionary now that the sorting is no longer needed. Big performance improvement for ResendUnacked()
2009-10-21* FireQueueEmpty now checks if a measurable amount of time has passed, and ↵John Hurliman1-4/+0
if not it sleeps for a small amount of time. This throttles OnQueueEmpty calls where there is no callback or the callback is doing very little work * Changed HandleQueueEmpty()'s Monitor.TryEnter() calls to locks. We want to take our time in this function and do all the work necessary, since returning too fast will induce a sleep anyways
2009-10-21* Handle UseCircuitCode packets asynchronously. Adding an agent to a scene ↵John Hurliman1-3/+5
can take several seconds, and was blocking up packet handling in the meantime * Clamp retransmission timeout values between three and 10 seconds * Log outgoing time for a packet right after it is sent instead of well before * Loop through the entire UnackedPacketCollection when looking for expired packets
2009-10-21* Replaced the UnackedPacketCollection with a lockless implementation. The ↵John Hurliman1-76/+71
tiny amount of time spent in the locks turned into a lot of time when the rest of the LLUDP implementation went lockless * Changed the timer tracking numbers for each client to not have "memory". It will no longer queue up calls to functions like ResendUnacked * Reverted Jim's WaitHandle code. Although it was technically more correct, it exhibited the exact same behavior as the old code but spent more cycles. The 20ms has been replaced with the minimum amount of time before a token bucket could receive a drip, and an else { sleep(0); } was added to make sure the outgoing packet handler always yields at least a minimum amount
2009-10-20* Added a sanity check to GetScriptAssemblies() and GetScriptStates() for ↵John Hurliman1-0/+2
the case where no scripting engine is enabled * Added TokenBucket.cs to OpenSim, with some fixes for setting a more accurate MaxBurst value and getting a more accurate Content value (by Drip()ing each get)
2009-10-13* Copied LocklessQueue.cs into OpenSim.Framework and added the .Count ↵John Hurliman1-0/+9
property and .Clear() method * Changed the way the QueueEmpty callback is fired. It will be fired asynchronously as soon as an empty queue is detected (this can happen immediately following a dequeue), and will not be fired again until at least one packet is dequeued from that queue. This will give callbacks advanced notice of an empty queue and prevent callbacks from stacking up while the queue is empty * Added LLUDPClient.IsConnected checks in several places to prevent unwanted network activity after a client disconnects * Prevent LLClientView.Close() from being called twice every disconnect * Removed the packet resend limit and improved the client timeout check
2009-10-06Applying the real fix (thank you for tracking that MSDN doc down Melanie)John Hurliman1-5/+6
2009-10-06Trying Melanie's fixJohn Hurliman1-3/+4
2009-10-06* Added a sanity check for Mono before trying to enumerate over an empty ↵John Hurliman1-0/+3
SortedDictionary * Changed the order of a log line from DotNetEngine so you can tell whether or not it is actually loading
2009-10-06* Added missing references to prebuild.xml and commented out the LindenUDP ↵John Hurliman1-4/+45
tests until a new test harness is written * Clients are no longer disconnected when a packet handler crashes. We'll see how this works out in practice * Added documentation and cleanup, getting ready for the first public push * Deleted an old LLUDP file
2009-10-06* Continued work on the new LLUDP implementation. Appears to be functioning, ↵John Hurliman1-0/+114
although not everything is reimplemented yet * Replaced logic in ThreadTracker with a call to System.Diagnostics that does the same thing * Added Util.StringToBytes256() and Util.StringToBytes1024() to clamp output at byte[256] and byte[1024], respectively * Fixed formatting for a MySQLAssetData error logging line