* [0.7.2] Start threads as background in HashedWheelTimer, LoopExecutor, ThreadDeathWatcher
* + code formatting
* [0.7.3] Target net5 and net6 (#2)
target net5 and net6
Adopted TlsHandler for the case when Handshake completion callback is dispatched asynchronously to thread pool
Introduced SingleThreadedEmbededChannel for TlsHandler and SniHandler tests
* + Update DotNetVersion to "6.0.302" in build.ps1
Motivation
.NET Core tooling allows building for both .NET Framework and .NET Standard while easing pains of running tests and packaging.
Modifications
- csproj -> xproj + project.json
- support for .NET Standard 1.3
- build script is now based on CAKE
- using dotnet CLI for building, testing, packing
- strong name by default (snk included)
Result
DotNetty works on .NET Core and any other platform supporting .NET Standard 1.3+.
Motivation:
SocketException and ODE are being thrown when disconnecting gracefully.
Modifications:
- dismiss async read completion if it is done on inactive channel
- do not attempt sync-reading from a socket that is not Connected
- extra: fixing echo sample with better practices
- extra: ReadListener for more natural test scenarios
- extra: tweaked nbench spec to work in-loop
Result:
No excessive errors happen during graceful shutdown
Motivation:
Some important SSL Stream settings are hidden in the TlsHandler class
Modifications:
SSLStream is provided by user now via factory method;
TLS settings extended
Results:
More advanced scenarios, like X509 client authentication, are possible to do now
Motivation:
Modern language features provide for easier to read, more compact code.
Modifications:
- expression body for single line methods
- Extra: fixes in xml docs
- Extra: code style deviations in recent commits
Result:
Cleaner, more consistent code.
Motivation:
Fix up top priority issues to ensure proper working state with recent changes.
Modifications:
- TlsHandler negotiates TLS 1.0+ on server side (#89)
- STEE properly supports graceful shutdown (#7)
- UnpooledHeapByteBuffer.GetBytes honors received index and length (#88)
- Echo E2E test uses length-prefix based framing (#90)
Result:
Setting up DotNetty does not require workarounds for shutdown and hacks to enable negotiation of higher versions of TLS. Tests are passing even with new SslStream behavior.
Motivation:
If users want to change the ByteBuffer of the string, it is complicated.
Modifications:
Implement ToString methods in IByteBuffer and derived classes.
Result:
Users can easily use to change IByteBuffer to the string.
Port Logging Handler Fixes#38
Motivation:
LoggingHandler is a must in many situations especially with non-trivial
pipeline composition so it will definitely be ported soon . It actually
provides nice looking bytebuf output + additional log for all the
events.
Modifications:
Added Logging functionality to DotNetty.Handlers project
Modified Echo.Server example project to log the events
Result: Easier to learn DotNetty from output by LoggingHandler
enable netty's internal logging experience to ease porting efforts and streamline logging configuration
Modifications:
- ported over InternalLogger and InternalLoggerFactory
- implemented InternalLogger using EventSource
- switched existing internal logging to this (increasing parity with netty)
- added logging configuration in Echo example
- added log to xunit output to end-to-end tests
*** extras
- fixed Echo client to send back received message (not 0 bytes)
- MqttDecoder no longer closes the Channel by itself instead changing internal state to invalid and forwarding an exception.
- further fix to ReSharper's code cleanup settings to properly arrange scope modifiers
Result:
internal components can use familiar experience to perform logging, e.g. `static readonly IInternalLogger Logger = InternalLoggerFactory.GetInstance<AbstractChannel>();`
Motivation:
At the present moment documentation of DotNetty is almost non-existent.
Moreover there are no examples that can be used as starting point for the
library learning. This commit is mean to provide basic client-server echo example over secure pipeline.
Modification:
- Created an examples directory to be used in the future for possible
examples projects.
- Added two console projects used to establish server-client connection
with basic secure DotNetty echo pipeline.
Result:
New console projects have been created under /examples directory.