Commit Graph

52 Commits

Author SHA1 Message Date
Jim Radford
5cd3013890 LIBOMV-651 Corrects issue showing incorrect hex data on UDP packets after re-importing saved sessions
LIBOMV-650 Correctly displays capability messages after import
* Fixes saving and restoring sessions and filters in WinGridProxy
* Many Changes to WinGridProxy UI, AutoScroll is no longer an option, instead the Session ListView can be sorted by the # column to have this behavior, Hex/binary data can be saved to individual files for outside processing (tiny button on bottom toolbar of Hex tab when hex has data that can be exported)
* Filter save/restore options are now on the Filters tab since thats where they are most useful
* Adds support for decoding AgentGroupDataUpdate message which OpenSim sends as an "AvatarGroupsReply"
* Updates and additional documentation in AgentManager, Simulator and ObjectManager classes
* PacketDecoder class is now static
* Removed profanity in debugging Console write
* Updates to Decoders: Decode LayerData type, Show internal Animation constant for built in animations
* Moved Message decoder to PacketDecoder class
* Add some sanity checks in GridProxy to prevent throwing an exception when a GridProxy is restarted and a viewer wasn't informed.


git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3205 52acb1d6-8a22-11de-b505-999d5b087335
2009-11-03 05:32:49 +00:00
Jim Radford
95a87c7857 LIBOMV-686 Convert NetworkManager events/delegates to new patterns
* Remove INetworkManager interface (it was not being used for anything)

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3182 52acb1d6-8a22-11de-b505-999d5b087335
2009-10-28 08:01:52 +00:00
Jim Radford
bee710bd57 LIBOMV-720 Adds network utilization tracking, example TestClient command 'netstats' included to display the results.
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3152 52acb1d6-8a22-11de-b505-999d5b087335
2009-10-18 00:08:20 +00:00
Jim Radford
e09e3f45b3 LIBOMV-686 Implements new event patterns based on the Microsoft Framework Design Guidelines in ParcelManager
* Changes some public method names to match patterns used through library, namely requests that have an event are named with Request as a prefix
* Add Key2Name TestClient command for resolving group and avatar names based on a UUID
* BREAKING CHANGE * this is a major shift in the way events are internally handled.

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3151 52acb1d6-8a22-11de-b505-999d5b087335
2009-10-17 05:50:51 +00:00
John Hurliman
5bd0aae867 * Inventory.RootNode and Inventory.LibraryRootNode now return null instead of throwing an exception. Properties should not throw exceptions
* Fixed unintended overriding of LindenMessages.AssetUploaderBlock.State
* Changed the disposable pattern of Simulator to match what MS code analysis suggested
* Added using { } blocks to lots of stream opening to ensure the streams are always closed before going out of scope

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3080 52acb1d6-8a22-11de-b505-999d5b087335
2009-08-12 23:45:52 +00:00
Latif Khalifa
1faa60a75f LIBOMV-655: Print resend timout before zeroing it out
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3051 52acb1d6-8a22-11de-b505-999d5b087335
2009-08-02 23:49:58 +00:00
Jim Radford
0530b799b5 XML Documentation updates (No code changes)
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3008 52acb1d6-8a22-11de-b505-999d5b087335
2009-07-21 21:05:12 +00:00
Latif Khalifa
11bf653dd1 Catch all exceptions if we cannot change AckTimer, fixes nullref in LIBOMV-636
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3006 52acb1d6-8a22-11de-b505-999d5b087335
2009-07-19 22:45:09 +00:00
Latif Khalifa
de0e00a1f0 LIBOMV-636: Dereference timers so GC can collect GridClient and managers
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2998 52acb1d6-8a22-11de-b505-999d5b087335
2009-07-17 16:54:45 +00:00
John Hurliman
3d2ef50871 * Catch an ObjectDisposedException for the AckTimer
* Added item embedding support to createnotecard, which is currently not working. Any help getting this working would be appreciated

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2963 52acb1d6-8a22-11de-b505-999d5b087335
2009-07-10 17:31:57 +00:00
707b5378aa Removed EstateTools instance from Simulator, in accordance with LIBOMV-516. The only instance should be Client.Estate
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2930 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-28 16:09:01 +00:00
John Hurliman
eb0430f8dd Added a sanity check when restarting the Simulator.AckTimer to resolve [LIBOMV-604]. Thanks root66
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2920 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-27 22:18:41 +00:00
John Hurliman
f9be319211 * Fixed the possibility of simulator timer callbacks becoming stacked if Connect() was called while the timer callbacks were still running
* ACK timer is only restarted once it completes to prevent the callback from stacking

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2890 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-15 18:32:06 +00:00
John Hurliman
d0a9c6401f Resolving [LIBOMV-567]. libomv now throws a helpful error and a stack trace when a packet cannot be serialized because of null blocks
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2886 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-15 17:42:35 +00:00
Jim Radford
4dfc376536 LIBOMV-572 Increases ZeroCode buffer to 8192 bytes
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2842 52acb1d6-8a22-11de-b505-999d5b087335
2009-06-03 20:07:43 +00:00
John Hurliman
084d2de86a * Added a required lock in the UDP ACK management (thanks lkalif)
* Added Cable Beach OpenSim attributes for wearable items

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2820 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-27 21:15:14 +00:00
John Hurliman
447d4db366 Allow appended ACKs to be attached to resent and/or unreliable packets
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2817 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-27 17:24:28 +00:00
John Hurliman
1ea4221f11 * Moved ACK handling to PacketReceived instead of after the incoming packet queue. This reduces average round trips (on the loopback connection) from ~200ms to ~15ms
* Added a more efficient collection for tracking already received packets

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2816 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-27 16:54:05 +00:00
John Hurliman
baaf1fb1f4 * Only append ACKs to outgoing packets if one or more ACKs are successfully dequeued
* Commented out noisy CAPS debugging messages
* Added a test (under packet tests for lack of a better place) to measure Environment.TickCount resolution and fail if the resolution is not consistently under a 10ms variance

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2813 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-27 00:29:43 +00:00
John Hurliman
2f0aea84b0 * Sanity check for invalid response data during login in libomv and GridClient
* Couple of tiny fixes here and there

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2806 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-25 19:33:20 +00:00
John Hurliman
3015a7a271 Minor cleanup
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2801 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-22 21:47:28 +00:00
John Hurliman
f1e8fd4fe8 Major rewrite of the packet sending code:
* Automatic packet splitting. You can send packets with any number of blocks and the networking layer will split them up automatically
* Less memory is allocated for outgoing packet buffers
* Memory is only allocated for zerocoding (outgoing and incoming) when it is needed
* A lockless queue is used to hold outgoing ACKs
* ACKs are stuffed into packets until they hit the MTU
* All outgoing packets are serialized exactly once, instead of serializing every resend
* Improved the clarity of the networking layer (I will upload a flow chart of packet sending soon)

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2800 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-22 19:54:00 +00:00
John Hurliman
c82459c323 * Removed the unnecessary overflow check when setting packet sequence number. Interlocked.Increment() handles wrapping for us
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2798 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-21 22:25:25 +00:00
John Hurliman
94f881085a Fixing pending ACK locking problems mentioned in [LIBOMV-551] and [LIBOMV-548]
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2796 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-21 17:44:39 +00:00
John Hurliman
032ce35729 Replacing networking stats tracking code with thread-safe calls
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2784 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-19 17:27:43 +00:00
Jim Radford
9ad17de8e3 LIBOMV-530 Updates Simulator object to include new variables included in 1.23 message template which are sent during the region handshake and include information on physical server location, the type of region (Homestead, OpenSpace, etc), CPU Class and CPU Ratio.
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2738 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-10 09:05:06 +00:00
John Hurliman
79beceeb1d * Rewrote the Header class as a struct and optimize for speed. This shouldn't be a breaking change for most apps, but GridProxy and WinGridProxy will need to be tested as thoroughly as possible. Important to note is that Packet.Header.AckList can be null now
* 404 checking in SeedRequestCompleteHandler
* A few new big endian conversion methods in Utils

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2709 52acb1d6-8a22-11de-b505-999d5b087335
2009-05-08 06:38:28 +00:00
154d2ef319 [Simulator.cs]
* Changed simulator.AvatarPositions from Dictionary to InternalDictionary
* Resolves LIBOMV-450 by removing simulator.PositionIndexYou and .PositionIndexPrey in favor of Client.Self.AgentID and simulator.PreyID for indexing AvatarPositions
[InternalDictionary.cs]
* Added lock to .TryGetValue
* Added .FindAll overload for using a key as the predicate instead of value
[OpenMetaverse.GUI]
* Visual and functional enhancements to Minimap and AvatarList (takes advantage of new AvatarPositions code)
* Added failed login retry dialog to Dashboard
* Added more documentation to public classes

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2549 52acb1d6-8a22-11de-b505-999d5b087335
2009-03-27 18:29:32 +00:00
Latif Khalifa
b240c1442e Removed cruft from previois commit - LIBOMV-450
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2452 52acb1d6-8a22-11de-b505-999d5b087335
2009-02-22 10:48:00 +00:00
Latif Khalifa
d116087ecb LIBOMV-450: Breaking change. Change avatar locations from List<Vector3> to Dictionary<UUID, Vector3> to enable more uses of CoarseLocationUpdateCallback.
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2451 52acb1d6-8a22-11de-b505-999d5b087335
2009-02-22 10:45:03 +00:00
John Hurliman
39f154178b Implemented NetworkManager.OnPacketSent callback that is fired after every outgoing packet has been put on the wire. Adds the basic functionality requested in [LIBOMV-60]
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2444 52acb1d6-8a22-11de-b505-999d5b087335
2009-02-17 19:22:07 +00:00
John Hurliman
4b1f441574 * Sanity check in DeserializeLLSDXml() to return an empty LLSD block instead of throwing an exception
* Removing redundant code from OpenMetaverse.Utilities
* Using System.Diagnostics.StopWatch instead of Environment.TickCount for rate limiting, and speeding up packet sending from 75ms gaps to 10ms (might be slightly too fast, but it works for me)
* Cleaning up the logic a big in RequestAllSimParcels()
* Try/catch block in GridProxy around packet delegates

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2371 52acb1d6-8a22-11de-b505-999d5b087335
2008-12-05 01:34:24 +00:00
John Hurliman
99b3b74cd6 * More cleanup to acking and resending in libomv and Simian
* Fixed typo in Simian.ini that was disabling connection management
* Replaced several unnecessary foreach loops in Simian with dictionary lookups
* Simian now uses the last detected system IP address instead of the first

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2342 52acb1d6-8a22-11de-b505-999d5b087335
2008-11-10 18:00:05 +00:00
ae2f5ce1b3 * Implemented LIBOMV-418: Add SetObjectSaleInfo() function to ObjectManager
* Cleaned up locking in KillObjectHandler
* Fixed an xml param name in Simulator.SendPacketUnqueued

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2337 52acb1d6-8a22-11de-b505-999d5b087335
2008-11-09 18:51:38 +00:00
Latif Khalifa
58aa671519 Allow outgoing packet throttling to be disabled. [LIBOMV-417]
git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2335 52acb1d6-8a22-11de-b505-999d5b087335
2008-11-09 18:17:36 +00:00
John Hurliman
956b2a6b78 * Lots of networking code cleanup, should hopefully resolve [LIBOMV-415] (thank you Teravus!)
* OldestUnacked is now properly set in outgoing pings
* Enable sending pings by default

git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@2333 52acb1d6-8a22-11de-b505-999d5b087335
2008-11-07 20:28:32 +00:00
b26e505387 Implements LIBOMV-408: Simulator Pause/Resume functionality (replaces NetworkManager.Pause/Resume functions which only affected the current simulator)
git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2311 52acb1d6-8a22-11de-b505-999d5b087335
2008-10-27 02:11:40 +00:00
John Hurliman
046a778b09 Applying [LIBOMV-395] from Jeff Ames to comment out dead code and fix lots of compiler warnings
git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2284 52acb1d6-8a22-11de-b505-999d5b087335
2008-10-09 16:48:44 +00:00
John Hurliman
44e49f8195 * Reverted the Simulator.ParcelOverlay change to an array of enums, Buffer.BlockCopy and Array.Copy both barf. Added a comment that you can typecast afterward to decode the byte
* Finished TerrainManager.DecompressWind() and added TerrainManager.WindSpeeds. Holds a 16x16 array of Vector2s, each one representing the wind speed at a 16x16m area
* Added a WindCommand to TestClient to print the wind speed where the avatar is standing

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2241 52acb1d6-8a22-11de-b505-999d5b087335
2008-09-26 13:11:00 +00:00
John Hurliman
8e70446f3c * Added Utils.CopyBytes() to OpenMetaverseTypes, should be used any time a byte array is grabbed from a packet member and directly assigned to another variable
* Moved Simulator enums (RegionFlags and SimAccess) into the main OpenMetaverse namespace
* More comments

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2233 52acb1d6-8a22-11de-b505-999d5b087335
2008-09-22 15:05:14 +00:00
John Hurliman
6b040fd03a * Moved ParcelManager enums out into the main OpenMetaverse namespace
* Removed some members from the Parcel struct that shouldn't be there

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2232 52acb1d6-8a22-11de-b505-999d5b087335
2008-09-22 13:02:27 +00:00
John Hurliman
451015b674 Removing ResendCount and TickCount from Packet class, moved to OutgoingPAcket struct. This is necessary to prevent big problems when sending the same packet to multiple destinations
git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2204 52acb1d6-8a22-11de-b505-999d5b087335
2008-09-08 23:57:31 +00:00
Jim Radford
78ef0621c9 LIBOMV-362 Adds some sanity checking and better logic to internal Parcel Dictionaries to prevent overloading the outbound packet queue with unnecessary requests.
git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2199 52acb1d6-8a22-11de-b505-999d5b087335
2008-09-06 10:19:46 +00:00
John Hurliman
6e4eb466ad * UDPPacketBuffer.Data and UDPPacketBuffer.ZeroData are now readonly to prevent mischief
* Removed UDPPacketBuffer constructors that let you initialize with empty buffer arrays, they are always initialized now for safety

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2150 52acb1d6-8a22-11de-b505-999d5b087335
2008-08-22 00:19:44 +00:00
John Hurliman
0bd77baba2 * Adding generic HttpServer to OpenMetaverse.Capabilites
* LoginResponseData can now serialize to XmlRpc
* Adding new Simian project, ultra-lightweight simulator for testing and development
* Shuffling OpenMetaverse.Capabilities around a bit in preparation for CAPS server implementation

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2094 52acb1d6-8a22-11de-b505-999d5b087335
2008-08-16 02:04:20 +00:00
John Hurliman
99239ebcfc * Splits libomv into OpenMetaverseTypes.dll and OpenMetaverse.dll
* All MathUtils and non-SL-specific Helpers functions have been put in OpenMetaverseTypes.dll inside the Utils class. Helpers only contains SL-specific functions now
* LLSD encoding/decoding for custom types has been moved out of the types and implemented as static functions in the LLSD class

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2082 52acb1d6-8a22-11de-b505-999d5b087335
2008-08-12 22:38:02 +00:00
John Hurliman
d27fd88c64 * Removing old openjpeg-libsl.dll
* Adding Helpers.FieldToHexString() overload that matches the old function signature
* Added Quaternion.GetAxisAngle()
* Remove TestClient's own inventory stores since they are in libomv now

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2071 52acb1d6-8a22-11de-b505-999d5b087335
2008-08-05 22:36:47 +00:00
John Hurliman
e2986fbf06 * Heralding in a new era of botdom with [LIBOMV-343], rate limiting for outgoing packets
* Converted BlockingQueue to a generic collection

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2048 52acb1d6-8a22-11de-b505-999d5b087335
2008-08-02 01:49:20 +00:00
John Hurliman
a3801365d7 * Finished Matrix4
* More documentation in Types.cs
* Catch MalformedPacketExceptions and dump the packet data
* Clean up hex dump routines
* Renamed Quaternion.FromEuler to Quaternion.FromEulers and added another overload that takes floats instead of a vector

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2035 52acb1d6-8a22-11de-b505-999d5b087335
2008-07-31 00:28:53 +00:00
John Hurliman
24471fe5fa * Converting packet sequence number incrementing from the unsafe lock{} mechanism to the Interlocked class
* Tiny speed optimizations in packet handling

git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@2018 52acb1d6-8a22-11de-b505-999d5b087335
2008-07-29 16:52:44 +00:00