aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/IClientAPI.cs (unfollow)
Commit message (Collapse)AuthorFilesLines
2011-04-19Requeue unacknowledged entity updates rather than resend then "as is".Dan Lake1-12/+47
Often, by the time the UDPServer realizes that an entity update packet has not been acknowledged, there is a newer update for the same entity already queued up or there is a higher priority update that should be sent first. This patch eliminates 1:1 packet resends for unacked entity update packets. Insteawd, unacked update packets are decomposed into the original entity updates and those updates are placed back into the priority queues based on their new priority but the original update timestamp. This will generally place them at the head of the line to be put back on the wire as a new outgoing packet but prevents the resend queue from filling up with multiple stale updates for the same entity. This new approach takes advantage of the UDP nature of the Linden protocol in that the intent of a reliable update packet is that if it goes unacknowledge, SOMETHING has to happen to get the update to the client. We are simply making sure that we are resending current object state rather than stale object state. Additionally, this patch includes a generalized callback mechanism so that any caller can specify their own method to call when a packet expires without being acknowledged. We use this mechanism to requeue update packets and otherwise use the UDPServer default method of just putting expired packets in the resend queue.
2011-04-18Requeue unacknowledged entity updates rather than resend then "as is".Dan Lake1-12/+47
Often, by the time the UDPServer realizes that an entity update packet has not been acknowledged, there is a newer update for the same entity already queued up or there is a higher priority update that should be sent first. This patch eliminates 1:1 packet resends for unacked entity update packets. Insteawd, unacked update packets are decomposed into the original entity updates and those updates are placed back into the priority queues based on their new priority but the original update timestamp. This will generally place them at the head of the line to be put back on the wire as a new outgoing packet but prevents the resend queue from filling up with multiple stale updates for the same entity. This new approach takes advantage of the UDP nature of the Linden protocol in that the intent of a reliable update packet is that if it goes unacknowledge, SOMETHING has to happen to get the update to the client. We are simply making sure that we are resending current object state rather than stale object state. Additionally, this patch includes a generalized callback mechanism so that any caller can specify their own method to call when a packet expires without being acknowledged. We use this mechanism to requeue update packets and otherwise use the UDPServer default method of just putting expired packets in the resend queue.
2011-04-13Fixed the update of items in the priority queue to enable bothMic Bowman1-0/+5
types of property updates to be specified. Not sure if one form of property update should supercede another. But for now the old OpenSim behavior is preserved by sending both.
2011-04-13First pass at moving object property requests into a queue similarMic Bowman1-18/+21
to the entity update queue. The number of property packets can become significant when selecting/deselecting large numbers of objects. This is experimental code.
2011-04-12Fixed the update of items in the priority queue to enable bothMic Bowman1-0/+5
types of property updates to be specified. Not sure if one form of property update should supercede another. But for now the old OpenSim behavior is preserved by sending both.
2011-04-12First pass at moving object property requests into a queue similarMic Bowman1-18/+21
to the entity update queue. The number of property packets can become significant when selecting/deselecting large numbers of objects. This is experimental code.
2011-04-12Fixed the update of items in the priority queue to enable bothMic Bowman1-0/+5
types of property updates to be specified. Not sure if one form of property update should supercede another. But for now the old OpenSim behavior is preserved by sending both.
2011-04-12First pass at moving object property requests into a queue similarMic Bowman1-18/+21
to the entity update queue. The number of property packets can become significant when selecting/deselecting large numbers of objects. This is experimental code.
2011-03-25Start using IPrimCounts populated by PrimCountModule instead of LandData ↵Justin Clark-Casey (justincc)1-1/+11
counts populated by LandManagementModule. In order to pass ILandObject into IClientAPI.SendLandProperties(), had to push ILandObject and IPrimCounts into OpenSim.Framework from OpenSim.Region.Framework.Interfaces, in order to avoid ci Counts are showing odd behaviour at the moment, this will be addressed shortly.
2010-12-30Implement SendPlacesReplyMelanie1-0/+19
2010-12-23* Re-Adding Scene TimeDilation to Object Update Packets.Teravus Ovares (Dan Olivares)1-1/+3
* Added Calculating Time Dilation in the OdePlubin * When multiple object updates are stuffed into one packet, average the time dilation between them as a compromise. * Time Dilation on the update is calculated when the EntityUpdate object is created. The pre-calc-ed TD is stored in the Entity update and used when it goes out on the wire. Previously, it was 1.0 all the time. The time dilation is tied to when the update is created, not when the update is sent.
2010-12-21* Adds AbortXfer to the ClientAPI mixTeravus Ovares (Dan Olivares)1-0/+2
* Adds an item that checks to see if the top request has been there for longer then 30 seconds without an update and sends an AbortXfer if it encounters one. This allows the client to cancel the Xfer on it's side so you can re-select the prim and get the inventory when it fails the first time. * Some interesting locking... Using NewFiles to lock the rest of them. We'll see how that goes. * The goal of this is to ensure that Xfers are restartable when they fail. The client will not do that on it's own.
2010-12-13Revamp the viewer -> banlist packet processing so fix a number of bugs.Melanie1-3/+4
Remove the too coarse CanEditParcel method in favor of a CanEditParcelProperties method that takes a GroupPowers argument to specify what action is to be taken. Also, make the method to set parcel data much more granular. Permissions in a deeded setting should now work.
2010-10-20Major refactoring of appearance handling.Master ScienceSim1-3/+3
AvatarService -- add two new methods, GetAppearance and SetAppearance to get around the lossy encoding in AvatarData. Preseve the old functions to avoid changing the behavior for ROBUST services. AvatarAppearance -- major refactor, moved the various encoding methods used by AgentCircuitData, ClientAgentUpdate and ScenePresence into one location. Changed initialization. AvatarAttachments -- added a class specifically to handle attachments in preparation for additional functionality that will be needed for viewer 2. AvatarFactory -- removed a number of unused or methods duplicated in other locations. Moved in all appearance event handling from ScenePresence. Required a change to IClientAPI that propogated throughout all the IClientAPI implementations.
2010-08-16Added SendTeleportProgress to IClientAPI. Ya know what that means... 8 files ↵Diva Canto1-0/+2
affected.
2010-08-16Work on TeleportStart: renamed method from TeleportLocationStart to ↵Diva Canto1-1/+1
TeleportStart, and now sending this upon all teleports, not just some, and in the right place (EntityTransferModule).
2010-07-14Major attachments cleanup. Remove unused AttachObject ClientView methodMelanie1-1/+0
Clean up use of AttachObject throughout, reduce number of overloads and number of parameters
2010-07-14Remove useless quaternion parameter from AttachObject sigMelanie Thielker1-1/+1
2010-06-12Move "StopFlying()" into LLSpace. Try to reinstate the carefully crafted packetMelanie1-0/+2
we used to send before slimupdates and explicitly send it
2010-05-21Added overload of SendGenericMessage to LLClientView with string list as ↵Mikko Pallari1-0/+1
parameter. Now modules themselfs don't necessarily need to convert strings to byte arrays. Added this as it was removed in LightShare patch.
2010-05-21* Moving all of the prioritization/reprioritization code into a new file ↵John Hurliman1-12/+9
Prioritizer.cs * Simplified the interest management code to make it easier to add new policies. Prioritization and reprioritization share code paths now * Improved the distance and front back policies to always give your avatar the highest priority
2010-05-12* Initial commit of the slimupdates2 rewrite. This pass maintains the ↵unknown1-217/+41
original behavior of avatar update sending and has a simplified set of IClientAPI methods for sending avatar/prim updates
2010-04-30Fix link security issueMelanie1-1/+1
2010-04-12thanks lkalif for Mantis #4676 - a patch that adds support for inventory linksdahlia1-0/+5
Signed-off-by: dahlia <dahliaTrimble@gmail.removeme.com>
2010-03-31Committing the LightShare code, which was developed by TomMeta of Meta7.Melanie1-1/+1
This allows scripts to set WindLight parameters for clients connecting to a region. Currently, this is only supported by the Meta7 viewer.
2010-03-09- parcel blocking, region crossing blocking, teleport blockingunknown1-0/+1
Signed-off-by: Melanie <melanie@t-data.com>
2010-03-06- supporting llTextBoxunknown1-0/+1
Signed-off-by: Melanie <melanie@t-data.com>
2010-02-28Change the signature of SendChangeUserRights, because we have to sendMelanie1-1/+1
this to both parties
2010-02-28Add missing ChangeUserRights packet senderMelanie1-0/+1
2010-02-28Initial Online friends notification seems to be working reliably now. All ↵Diva Canto1-1/+3
this needs more testing, but everything is there.
2010-02-14Revolution is on the roll again! :)Revolution1-2/+6
Fixes: Undo, T-pose of others on login, modifiedBulletX works again, feet now stand on the ground instead of in the ground, adds checks to CombatModule. Adds: Redo, Land Undo, checks to agentUpdate (so one can not fall off of a region), more vehicle parts. Finishes almost all of LSL (1 function left, 2 events). Direct flames and kudos to Revolution, please Signed-off-by: Melanie <melanie@t-data.com>
2010-01-29* HGGridConnector is no longer necessary.Diva Canto1-4/+9
* Handle logout properly. This needed an addition to IClientAPI, because of how the logout packet is currently being handled -- the agent is being removed from the scene before the different event handlers are executed, which is broken.
2010-01-26* a few more endlines..Teravus Ovares (Dan Olivares)1-4/+4
2010-01-09Add functionality to estate "Allowed Users" and "Allowed Groups". Allowed usersMelanie1-1/+1
will be honored now, while allowed groups will not. This requires additional groups module integration work
2010-01-08Adds IClientAPI voids for GroupProposals.Revolution1-1/+6
Signed-off-by: Melanie <melanie@t-data.com>
2010-01-07Fixes the newly added packets as per Melanie's request.Revolution1-11/+11
Provisionally applied to fix the naming. Signatures are still subject to change. Signed-off-by: Melanie <melanie@t-data.com>
2010-01-04Formatting cleanup. Add copyright headers.Jeff Ames1-1/+1
2009-12-31Whitespace cleanup (changed hard tabs to 4 spaces)Melanie1-61/+61
2009-12-31Adds tons of packets.Revolution1-0/+68
Applied with change: Changed spelling to Summary (from Summery) Signed-off-by: Melanie <melanie@t-data.com>
2009-12-26Add AvatarInterestsReplyMelanie1-0/+2
2009-11-09* Removing the redundant SendPrimitiveTerseData.State field, it duplicates ↵John Hurliman1-3/+1
AttachPoint * LLClientView.CreateImprovedTerseBlock() now uses AttachPoint and does the proper high-low swap (this should fix disappearing attachment pieces)
2009-11-05Patch by revolution, thank you. Mantis #1789 . Implement friends permissions.Melanie1-0/+2
Applied with major changes. Core functionality commented pending review for possible rights escalation. No user functionality yet.
2009-11-04Backport the fixes to WebFetchInventoryDescendents to the UDPMelanie1-1/+1
InventoryDescendents packet. Testing has shown that UDP inventory now works flawlessly and, unlike CAPS inventory, doesn't download the entire agent inventory on start. Neither does it incessantly re-request folder NULL_KEY. Therefore, I have disabled CAPS inventory.
2009-10-18* Rewrote the methods that build ObjectUpdate and ImprovedTerseObjectUpdate ↵John Hurliman1-105/+81
packets to fill in the data more accurately and avoid allocating memory that is immediately thrown away * Changed the Send*Data structs in IClientAPI to use public readonly members instead of private members and getters * Made Parallel.ProcessorCount public * Started switching over packet building methods in LLClientView to use Util.StringToBytes[256/1024]() instead of Utils.StringToBytes() * More cleanup of the ScenePresences vs. ClientManager nightmare * ScenePresence.HandleAgentUpdate() will now time out and drop incoming AgentUpdate packets after three seconds. This fixes a deadlock on m_AgentUpdates that was blocking up the LLUDP server
2009-10-18* Big performance increase in loading prims from the region database with MySQLJohn Hurliman1-0/+2
* Handle the AgentFOV packet * Bypass queuing and throttles for ping checks to make ping times more closely match network latency * Only track reliable bytes in LLUDPCLient.BytesSinceLastACK
2009-10-17Committing the second part of Jim Greensky @ Intel Lab's patch, ↵John Hurliman1-0/+27
re-prioritizing updates
2009-10-17Adds SendAvatarInterestsUpdate to IClientAPIMelanie1-0/+1
Thank you, Fly-Man
2009-10-15Object update prioritization by Jim Greensky of Intel Labs, part one. This ↵John Hurliman1-23/+231
implements a simple distance prioritizer based on initial agent positions. Re-prioritizing and more advanced priority algorithms will follow soon
2009-10-13* Fixed a bug where clients were being added to ClientManager twiceJohn Hurliman1-0/+2
* Changed the ClientManager interface to reduce potential errors with duplicate or mismatched keys * Added IClientAPI.RemoteEndPoint, which can (hopefully) eventually replace IClientAPI.CircuitCode * Changed the order of operations during client shutdown
2009-10-13* Rewrote ClientManager to remove Lindenisms from OpenSim core, improve ↵John Hurliman1-1/+1
performance by removing locks, and replace LLUDPClientCollection * Removed the confusing (and LL-specific) shutdowncircuit parameter from IClientAPI.Close() * Updated the LLUDP code to only use ClientManager instead of trying to synchronize ClientManager and m_clients * Remove clients asynchronously since it is a very slow operation (including a 2000ms sleep)