| 
								
								
									 Markus Ewald | d5293d8cb9 | Made Semaphore usable on the XBox 360 git-svn-id: file:///srv/devel/repo-conversion/nusu@181 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-10-05 19:43:04 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 9669adcab5 | Improved documentation for the AffineThreadPool class git-svn-id: file:///srv/devel/repo-conversion/nusu@180 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-09-27 10:48:38 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 3c10f05589 | Re-added the default exception handler which will now re-throw the exception, thereby mimicking the behavior of .NET's ThreadPool; wrote unit test to verify the default exception handler is working git-svn-id: file:///srv/devel/repo-conversion/nusu@179 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-09-18 21:14:27 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 273eb9885c | AffineThreadPool.CpuCores is now called AffineThreadPool.Processors because this is the term used throughout the .NET framework for the same concept git-svn-id: file:///srv/devel/repo-conversion/nusu@178 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-09-18 20:38:55 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 874fe0a9e4 | Found the synchronization problem in the affine thread pool - the auto reset event was being set twice before even a single thread pool thread made it through the WaitOne() - fixed by using a semaphore; implemented a semaphore that should work in the XBox 360; wrote unit tests for said semaphore; added messages to the affine thread pool's unit tests to make debugging easier git-svn-id: file:///srv/devel/repo-conversion/nusu@177 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-09-18 20:06:09 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 09247541f2 | Removed the AssertionDelegate stuff and added an UnhandledException delegate to the ThreadPool - maybe I'll turn this into an event analogous to Application.ThreadException; removed the EmptyQueue method which was a flawed concept anyway (especially the disposing of state objects!); rewrote the unit tests to work with the new and improved AffineThreadPool class - there's one test that fails when run through NCover, indicating some synchronization problem that I have yet to track down! git-svn-id: file:///srv/devel/repo-conversion/nusu@176 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-09-17 19:50:30 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 7a7e71d0c3 | Fixed XBox 360 compilation error git-svn-id: file:///srv/devel/repo-conversion/nusu@175 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-09-16 20:07:36 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | e74955b161 | The AffineThreadPool class now also tries to create CPU-affine threads on the full .NET framework (which uses P/Invoke and tries to lock a managed thread to a system thread, probably needs some work for Mono) git-svn-id: file:///srv/devel/repo-conversion/nusu@174 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-09-15 21:17:34 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 05e4aebaac | Replaced the affine thread pool with a less elegant implementation that works on the XBox 360 git-svn-id: file:///srv/devel/repo-conversion/nusu@173 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-09-15 20:03:19 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 316e2c379a | Added custom CPU core-affine thread pool implementation (which doesn't work on the XBox 360 because Monitor.Wait() and Monitor.Pulse() are not supported - but the code is so nice I want to capture this state in Subversion :D) git-svn-id: file:///srv/devel/repo-conversion/nusu@172 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-09-15 19:39:08 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 6ef2fdb789 | Fixed a typo; fixed a bug in the plug-in library that would see generic types deriving from a required base class as suitable whereas they cannot be instantiated without a generic argument; added unit tests that reproduce the errors git-svn-id: file:///srv/devel/repo-conversion/nusu@171 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-09-01 19:11:19 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 35b1ca742d | OperationQueue now attempts to prevent deep call stack nesting levels by looping when an Operation fired its AsyncEnded event synchronously; the OperationQueue's current operation index is now handled using the Interlocked methods, fixing a possible thread safety issue git-svn-id: file:///srv/devel/repo-conversion/nusu@170 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-08-28 20:27:15 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 2472c892fb | Added a note about an unexplained exception that happened one time whilst executing the unit tests git-svn-id: file:///srv/devel/repo-conversion/nusu@169 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-08-05 21:25:28 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 88b89dea19 | Fixed another compilation error that was causing the XBox 360 build to fail because .NET is missing the Math.DivRem() method on the XBox 360 git-svn-id: file:///srv/devel/repo-conversion/nusu@168 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-21 20:47:32 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | d91dc70146 | Fixed deque compilation error in release builds (missing #if..#endif around a place where a debug-only field was used) git-svn-id: file:///srv/devel/repo-conversion/nusu@167 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-21 20:42:07 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 9ec6546f70 | Added out-of-sync check for the Deque enumerator; added unit test for the out-of-sync check git-svn-id: file:///srv/devel/repo-conversion/nusu@166 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-14 21:52:40 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | a56da772d4 | Added missing CPL statements git-svn-id: file:///srv/devel/repo-conversion/nusu@165 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-14 21:32:44 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 0b23b1f7c4 | lastBlockCount is called lastBlockEndIndex again (anyone got a better term - it's an index one past the last entry, not a count); implemented the CopyTo() method; added unit tests for the CopyTo() method git-svn-id: file:///srv/devel/repo-conversion/nusu@164 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-14 21:08:10 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 3ee5fdfc67 | The deque class now fully supports the IList<> and IList interfaces (with the exception of CopyTo() and CopyToArray() which are not implemented yet); implemented a Clear() method; the deque enumerator is now fully functioning (but still missing an out-of-sync check); moved IndexOf() into its own file; wrote several additional unit tests to verify all the new interface methods are working and to keep test coverage at 100% git-svn-id: file:///srv/devel/repo-conversion/nusu@163 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-14 20:15:34 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | a817f52406 | Fixed an ugly bug in the IndexOf() method; achieved 100% test coverage for the deque code so far git-svn-id: file:///srv/devel/repo-conversion/nusu@162 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-13 21:17:09 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 7885e86836 | The deque's RemoveAt() method now shifts the objects in the direction that produces the least amount of work git-svn-id: file:///srv/devel/repo-conversion/nusu@161 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-13 20:22:59 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 58c3254260 | Implemented more efficient Insert() method for the deque; split RemoveAt() into left-shifting and right-shifting specializations (right-shifting still is a copy of the left-shifting one, will fix it soon); improved unit tests to catch any and all border cases; made the IndexOf() method workable; wrote unit tests for the IndexOf() method; moved removal and insertion functions into the own sub-files to avoid having huge source files git-svn-id: file:///srv/devel/repo-conversion/nusu@160 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-13 19:34:27 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | ed62fa85f2 | Implemented deque Insert() and RemoveAt() methods with fixed shifting of all items to the right for now - still have to extend the code to shift items to the closest end; added more unit tests to achieve 100% test coverage for the code git-svn-id: file:///srv/devel/repo-conversion/nusu@159 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-11 19:55:59 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | ff44edcdf1 | Began implementing a block-allocating Deque class similar to C++'s std::deque - insertion and removal at both ends already working git-svn-id: file:///srv/devel/repo-conversion/nusu@158 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-07-10 18:42:23 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 74bf351727 | Changed all remaining COMPACTFRAMEWORK constants around serialization code to NO_SERIALIZATION git-svn-id: file:///srv/devel/repo-conversion/nusu@157 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-26 20:17:59 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 8f16d09c8a | Fixed compilation error on XBox 360 git-svn-id: file:///srv/devel/repo-conversion/nusu@156 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-25 19:36:18 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 5d36825fc8 | Attempt to fix a possible bug in the generic time source class which could potentially attempt to construct an instance of System.DateTime with an invalid tick count git-svn-id: file:///srv/devel/repo-conversion/nusu@155 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-24 20:24:21 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 839d46ecf1 | The CommandLine class didn't construct command lines with empty arguments correctly (these need to be passed as empty quotes to be recognizable as an argument), fixed; added unit tests that exposes this bug; some minor cosmetic fixes git-svn-id: file:///srv/devel/repo-conversion/nusu@154 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-24 19:20:26 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | ce9a6bc932 | Added a unit tests that reproduces the bug fixed in the previous commit git-svn-id: file:///srv/devel/repo-conversion/nusu@153 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-22 18:54:12 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | f8adca9e17 | Fixed a glaring bug in the Scheduler causing errors when the scheduler's last item in the queue is cancelled git-svn-id: file:///srv/devel/repo-conversion/nusu@152 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-22 18:14:45 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | b38284d372 | The unlimited Wait() test still didn't produce 100% coverage - somehow the thread overtook the code creating it - added a Sleep(1) to fix this... git-svn-id: file:///srv/devel/repo-conversion/nusu@151 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-19 19:36:25 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 128feac03e | Reduced the likelihood of the unlimited wait test for the transaction class resulting in a code coverage of less than 100% git-svn-id: file:///srv/devel/repo-conversion/nusu@150 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-17 21:07:34 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 4fd22afcc0 | Fixed two small typos git-svn-id: file:///srv/devel/repo-conversion/nusu@149 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-15 20:15:43 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 6d7f4d11af | Minor cosmetic fix in comment git-svn-id: file:///srv/devel/repo-conversion/nusu@148 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-09 19:49:55 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | d6ddf04f58 | On very quickly scheduled recurrent notifications, it was still possible for the wait time to become negative due to the passage of time - now the scheduler will only use the WaitOne() method when the remaining time until notification is positive git-svn-id: file:///srv/devel/repo-conversion/nusu@147 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-09 19:47:30 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 6b8362d57d | Fixed a nasty bug that would make the scheduler queue notifications using their delay time as absolute notification time, causing negative numbers to be passed to WaitOne(); updated unit test to expose this problem if it happens git-svn-id: file:///srv/devel/repo-conversion/nusu@146 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-09 19:41:38 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | a6f7749121 | Moved the checkForTimeAdjustment() method in the generic time source behind the WaitOne() call because that's the most likely point for a date/time adjustment will have occurred at; WindowsTimeSource now exists on the XBox 360 as well, but will throw in its constructor and report Available as false (this simplifies things in other places); Scheduler class is fully working and 100% testable with simulated time (instead of waiting for scheduled notifications to be delivered in real time, which would make testing slow); added unit tests for Scheduler class and reached 100% coverage git-svn-id: file:///srv/devel/repo-conversion/nusu@145 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-09 19:28:11 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 4b9002b520 | Renamed DefaultTimeSource to GenericTimeSource; the generic time source will now detect when the system date/time is adjusted; made some progress on the Scheduler implementation; wrote some unit tests for the Scheduler class git-svn-id: file:///srv/devel/repo-conversion/nusu@144 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-08 20:32:14 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 2426868cce | Improved comments in various places; disabled all classes in the 'Services' namespace, including the type listers; added scheduler class which will act sort of like the cron daemon on unix machines; defined a time source interface so I can manually advance time instead of waiting in the unit tests; created two time sources, a generic one for all platforms and a windows specific one that will notice when the system time is adjusted git-svn-id: file:///srv/devel/repo-conversion/nusu@143 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-06-04 19:32:15 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 10d6533b50 | Added an obvious, simple and important optimization: when Transaction.Wait() is called, the transaction will not create a WaitHandle if it has already ended git-svn-id: file:///srv/devel/repo-conversion/nusu@142 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-05-28 19:55:48 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 0ada9998e2 | Renamed AssemblyTypeLister to MultiAssemblyTypeLister because otherwise, the name implies that it's a type lister for a single assembly; renamed PredefinedTypeLister to ExplicitTypeLister which is more intuitive; disabled all service manager code unless ENABLE_SERVICEMANAGER is defined (while it's under development); improved documentation for the multi assembly type lister; removed resolveContract() delegate and generic overloads git-svn-id: file:///srv/devel/repo-conversion/nusu@141 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-05-28 19:50:30 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | c9d9810c28 | Added prototype factory - a factory which created instances by cloning a prototype instance; redesigned the service manager to query types from an ITypeLister interface instead of tightly coupling it with the PluginRepository class; added type listers that list all assemblies in an app domain, in a PluginRepository and in a predefined list; renamed the IProgressTrackingService to IProgressCollectingService to make it perfectly clear which service is for which purpose; added Instancing.None to disallow the service manager from providing a certain contract; added CPL headers where they were missing git-svn-id: file:///srv/devel/repo-conversion/nusu@140 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-05-27 19:55:06 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 4e2beb71b8 | Removed ConcreteType property from IAbstractFactory<> interface (it was a really strange decision to add it in the first place, luckily it hasn't crept anywhere so far); provided a non-generic abstract factory interface; the factories returned by the factory employer now implement the non-generic factory interface git-svn-id: file:///srv/devel/repo-conversion/nusu@139 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-05-27 19:51:54 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 41dcfa34d0 | Added prototype code for an inversion-of-control container and a progress tracking service; moved XmlHelper class from Nuclex.UserInterface to Nuclex.Support; Nuclex.Support now uses the .NET Framework's own AssemblyLoadEventArgs class if it is compiled for the full framework; fixed a bug in the Request class that would cause exceptions to not be reported if Join() was called on a Request<x> was casted to a plain Request git-svn-id: file:///srv/devel/repo-conversion/nusu@138 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-05-20 20:14:21 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | d0fe47239e | Replaced all ExpectedExceptionAttributes with the new Assert.Throws<>() method to work around a compatibility issue between TeamCity 4.5 and NUnit 2.5 Final git-svn-id: file:///srv/devel/repo-conversion/nusu@137 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-05-07 19:36:27 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 06749b9cbb | Converted AssertHelperTest from using the ExpectedExceptionAttribute to Assert.Throws<>() - let's see if this makes TeamCity happy git-svn-id: file:///srv/devel/repo-conversion/nusu@136 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-05-07 19:07:28 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | d845b08a91 | IObservableCollection was internal - fixed git-svn-id: file:///srv/devel/repo-conversion/nusu@135 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-05-06 18:42:08 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 7e9e0e2bf1 | Made code in OperationQueue more readable; added new class PartialStream which wraps a segment of a larger stream as if it was a separate stream, allowing access to certain regions of a stream to be prohibited and headers of a stream to be cut off without requiring a lengthy copy operation git-svn-id: file:///srv/devel/repo-conversion/nusu@134 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-05-05 19:31:05 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | 1c317b3f66 | Moved RingMemoryStream class from the Collections namespace to the IO namespace git-svn-id: file:///srv/devel/repo-conversion/nusu@133 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-04-28 20:44:36 +00:00 |  | 
				
					
						| 
								
								
									 Markus Ewald | f2280629b9 | The command line class can now also be used to build a command line (for example, to pass it to another program); removed dead code from the command line class git-svn-id: file:///srv/devel/repo-conversion/nusu@132 d2e56fa2-650e-0410-a79f-9358c0239efd | 2009-04-23 20:23:23 +00:00 |  |