WIP: thread starvation handling.
dont discard message receiver when we are stopping the receiver, instead rely on dispose to clean it up.
Add Ninject extensions.
normalising reflection to support both implicit and explicit interface implementations
WIP: Very much a work in progress.
- We now have a custom task factory and task scheduler. They're both still very ugly but they're a whole lot more solid under thread-starvation conditions.
- We also have a new StressTests assembly where we can add stuff that hammers at the bus for longer periods.
- First cut of property injection for handlers and interceptors (needed for event/command/event/command/event cascades so that handlers can publish stuff to the bus in our test harnesses).
- Wired in Serilog for stress tests
- Started using Serilog-style log message formatting wherever I've touched code. We normalize this down to a string.Format(...) template where we need to so standard loggers won't break.
Excluded NimbusTaskFactory from convention test.
Tidied up extension method.
Marked interface as internal. (Fixed convention test.)
Tidyied up constructor parameters.
Tidied up parameter ordering.
Wired other bus operations back in.
Wired in Fody.NullGuard.
Fixed typo in exception message.
We now only create a LongLivedTaskWrapper when the task is actually long-lived.
^E^C
We now only create LongLivedTaskWrappers for multicast requests when the handler implements ILongRunningTask.
Renamed file to match class name.
More robustness work.
Moved throughput tests into StressTests project.
Added catch clause for ThreadAbortException (occurs when we stop the bus).