aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Util.cs (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Requeue unacknowledged entity updates rather than resend then "as is".Dan Lake2011-04-191-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* Parameterizes the view distance used to compute and manageMic Bowman2011-02-221-3/+10
| | | | | | | | | | | | | | child agents in neighbor regions. This means you can extend the view on a simulator beyond the default 3x3 regions. This uses a region default draw distance and should be replaced at some point by the avatar specified draw distance. That will require more careful, dynamic recomputation of child agents every time the draw distance changes. WARNING: this is experimental and has known instabilities. specifically all regions "within site" should be running the same default draw distance or agents will not be closed correctly.
* Put something in the ImprovedInstantMessage.BinaryBucket for ↵Justin Clark-Casey (justincc)2011-02-041-0/+10
| | | | | | | llInstantMessage() to stop this crashing viewer 2.4.0 (1.23.5 was fine with this). We're putting in a string of format "<region name><x pos floor int><y pos floor int><z pos floor int> which appears to be the expected value. This resolves http://opensimulator.org/mantis/view.php?id=5356
* Make FireAndForgetWrapper a singleton classBlueWall2011-01-131-3/+24
| | | | | | Made FireAndForgetWrapper a singleton class to allow us to drop dependancy on the BclExtras35 library. BclExtras is broken in Mono 2.8.2 and we used the library in only one function.
* Preservation of creator information now also working in IARs. Cleaned up ↵Diva Canto2010-11-291-0/+20
| | | | usage help. Moved Osp around, deleted unnecessary OspInventoryWrapperPlugin, added manipulation of SOP's xml representation in a generic ExternalRepresentationUtils function.
* Changed the parser for InventoryItem deserialization. Moved some utility ↵Diva Canto2010-11-271-0/+61
| | | | functions around.
* minor: add some method commentsJustin Clark-Casey (justincc)2010-11-171-0/+8
|
* Port ExecutingDirectory from omfOS Util class.Melanie2010-10-031-0/+11
|
* Make User Agent Service and Login Service separable.Diva Canto2010-09-041-1/+17
|
* Added XFF header processing. Untested, for lack of proxy.Diva Canto2010-09-031-0/+28
|
* Correct display of landmark about info. Also correct region maturity ratingMelanie Thielker2010-08-071-1/+11
| | | | | in LM info. Maturity is NOT the parcel's setting, that is only for the image and text. Parcel maturity is governed by region maturity.
* Fix http://opensimulator.org/mantis/view.php?id=4657 where ↵Justin Clark-Casey (justincc)2010-04-161-1/+1
| | | | | | OpenSim.Grid.UserServer.exe fails on startup if no previous config probably appears to occur because mono 2.4.2.3 (and possibly later) erroneously returns a value of 0 for BufferWidth and BufferHeight in some circumstances
* Bug fix: store correct position information upon logout. Fixes mantis #4608Diva Canto2010-03-061-0/+18
|
* Merge branch 'master' into presence-refactorMelanie2010-02-221-6/+12
|\ | | | | | | This brings presence-refactor up to master again
| * Change handling of the SYSTEMIP constant to be more sane.Melanie2010-02-181-6/+12
| | | | | | | | | | | | This will now choose the first network interface IP address, or the loopback interface if no external interfaces are found. It will log the IP address used as [NETWORK]: Using x.x.x.x for SYSTEMIP.
* | Changed an error message to w warning message.Diva Canto2010-01-301-1/+1
| |
* | More progress on both the Simulation service and the Login service. Both ↵Diva Canto2009-12-311-0/+27
|/ | | | still unfinished.
* * Implements OSSL function: osGetSimulatorMemory - returns the current ↵Adam Frisby2009-12-131-0/+20
| | | | | | | | amount of memory allocated to the simulator process (Moderate Threat Level). * Cleans redundant information out of the Simulator Version. Versions now look like: "OpenSimulator 0.6.9(dev) Unix/Mono" * [Minor] additional log info for MySQLInventoryData
* * Fix Inconsistent line ending style in UtilTeravus Ovares (Dan Olivares)2009-12-011-24/+24
|
* * Patch from Misterblue to fix Environment.TickCount for statistics ↵Teravus Ovares (Dan Olivares)2009-11-291-1/+25
| | | | | | purposes. Resolves the wrap-around of the 32 bit uint. * Teravus moved the Environment methods to the Util class
* Experimental test to rate limit the incoming packet handler and try to ↵John Hurliman2009-10-271-0/+21
| | | | always leave a worker thread available for other tasks
* * Change the way Util.FireAndForget() calls SmartThreadPool to avoid using a ↵John Hurliman2009-10-231-1/+11
| | | | delegate (which STP appears to hold on to). This removes the slow leak I was seeing when using async_call_method=SmartThreadPool and stabilizes allocated memory for an idle OpenSim instance
* Terrible typo in the previous commit!John Hurliman2009-10-221-1/+1
|
* * Added a check if Util.m_ThreadPool is null before trying to use it, and if ↵John Hurliman2009-10-221-13/+7
| | | | | | so initialize it to sane defaults * Simplified the InitThreadPool() function
* * Allow SmartThreadPool to be initialized without setting max stack size ↵John Hurliman2009-10-221-5/+7
| | | | | | | (like the original implementation) * Only initialize Util's SmartThreadPool if it is actually being used * No longer initializing Util's SmartThreadPool with a custom max stack size. From MSDN: "Avoid using this constructor overload. The default stack size used by the Thread(ThreadStart) constructor overload is the recommended stack size for threads."
* Merge branch 'melanie_test' into prioritizationMelanie2009-10-221-3/+23
|\ | | | | | | | | This makes SmartThreadPool configurable and also makes it the default, since the regular thread pool simply stinks.
| * Reduce the default pool threads to 15 (from 30) and the minimum from 5 to 2Melanie2009-10-221-1/+1
| |
| * Add MaxPoolThreads in startup to limit the size of the thread pool usedMelanie2009-10-221-12/+22
| | | | | | | | for FireAndForget. This lets us limit concurrency to make OpenSim play nice
* | * Changed the misc. methods calling ThreadPool.UnsafeQueueUserWorkItem() to ↵John Hurliman2009-10-211-19/+51
|/ | | | | | Util.FireAndForget() * Changed Util.FireAndForget() to use any of five different methods set with async_call_method in the [Startup] section of OpenSim.ini. Look at the example config for possible values
* * Change Util.FireAndForget to use ThreadPool.UnsafeQueueUserWorkItem(). ↵John Hurliman2009-10-191-8/+10
| | | | | | | | | | | | | | This avoids .NET remoting and a managed->unmanaged->managed jump. Overall, a night and day performance difference * Initialize the LLClientView prim full update queue to the number of prims in the scene for a big performance boost * Reordered some comparisons on hot code paths for a minor speed boost * Removed an unnecessary call to the expensive DateTime.Now function (if you *have* to get the current time as opposed to Environment.TickCount, always use DateTime.UtcNow) * Don't fire the queue empty callback for the Resend category * Run the outgoing packet handler thread loop for each client synchronously. It seems like more time was being spent doing the execution asynchronously, and it made deadlocks very difficult to track down * Rewrote some expensive math in LandObject.cs * Optimized EntityManager to only lock on operations that need locking, and use TryGetValue() where possible * Only update the attachment database when an object is attached or detached * Other small misc. performance improvements
* Converted FireAndForget methods to use a singleton pattern to attempt to ↵John Hurliman2009-10-161-2/+21
| | | | work around a Mono bug with nested delegates
* * Try/catch around EndInvoke() when Util.FireAndForget() returns to catch ↵John Hurliman2009-10-061-1/+3
| | | | | | | exceptions thrown in the async method * Added packet stats handling to the new LLUDP implementation * Attempting to avoid a race condition when creating a new LLUDPClient
* * Continued work on the new LLUDP implementation. Appears to be functioning, ↵John Hurliman2009-10-061-0/+36
| | | | | | | | 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
* Merge branch 'diva-textures-osgrid'Melanie2009-10-041-4/+6
|\
| * * Creates Util.UTF8 and switches some references of Encoding.UTF8 to ↵John Hurliman2009-10-021-5/+7
| | | | | | | | | | | | Util.UTF8 (not all references were switched since not all OpenSim libraries reference OpenSim.Framework) * Shrinks the largest in-memory object, the LLRAW.HeightmapLookupValue struct (only used for exporting to LLRAW terrain files), to the minimum possible size. This seems to have the odd side effect of cutting the size of the two double[256,256] terrain objects in half. Possibly an alignment optimization?
* | Formatting cleanup.Jeff Ames2009-10-011-3/+3
| |
* | Moved all HG1 operations to HGGridConnector.cs and ↵Diva Canto2009-09-261-0/+26
| | | | | | | | | | | | HypergridServerConnector.cs/HypergridServiceConnector.cs, away from Region.Communications and HGNetworkServersInfo. Fixed small bugs with hyperlinked regions' map positions.
* | * Minor commit, added two new math utility functions.Adam Frisby2009-09-241-0/+33
|/
* Added Util.FireAndForget(), to replace leaking calls to Delegate.BeginInvoke()John Hurliman2009-09-031-0/+22
|
* Remove debugging output frm ini file loading. Make it collect matchingMelanie2009-08-071-10/+8
| | | | files only from last path component.
* Add extensive debug output to Util.GlobMelanie2009-08-071-0/+9
|
* Remove GetFullPath call from config includes, because it barfs in WindozeMelanie2009-08-071-3/+0
|
* Add a method to init the OSSL Api's m_LSL_Api member back to the OSSL ApiMelanie2009-08-071-0/+3
|
* Allow arbitrary wildcards in config includes. Things likeMelanie2009-08-061-0/+51
| | | | | Include-Modules = "addin-modules/*/config/*.ini" will now work. Adds Util.Glob, which will resolve a globbed path into a string list.
* Formatting cleanup.Jeff Ames2009-06-101-2/+2
|
* Minor: Change OpenSim to OpenSimulator in older copyright headers and ↵Jeff Ames2009-06-011-1/+1
| | | | LICENSE.txt.
* Add copyright headers, formatting cleanup, ignore some generated files.Jeff Ames2009-05-311-1/+1
|
* One more utility. Not used yet.diva2009-05-251-2/+22
|
* * Fixes [irritating] edge case in Util.GetLocalHost which could return an ↵Adam Frisby2009-05-231-0/+8
| | | | | | | | IPv6 address if no non-loopback IPv4 address can be found. * Restores internal IPv6 support to NetworkUtil.* * Fixes bad login unit tests.
* * Adds new NetworkUtil class, contains methods for handling IP resolution ↵Adam Frisby2009-05-231-0/+14
| | | | | | | when located on the same subnet. (Eg, can be used to avoid NAT Loopback requirements if fully utilized.) * Adds a few new network-related methods to Util.