* Align API and Test of IdleStateHandler with netty 4.1.15(f9003293...7460d90a)
* Fix EmbeddedChannel.ReleaseAll crashes when queue is null
* Fix ReadTimeoutHandler don't close channel when timeout
* Change IdleStateHandler.ChannelIdle and WriteTimeoutHandler.WriteTimedOut to virtual
Motivation:
Make code to be as close to the original to benefit from co-development
UnpooledTests is needed
Modifications:
- added Copy* and CopiedBuffer functions with params support to Unpooled
- added new constuctors with params support to Unpooled
- added CombineBytes to ByteBufferUtil
- constants in AbstractByteBufferAllocator are now public
Result:
- can now verify that the current Unpooled class works as intended
Motivation:
In network programming the int24/uint24 is required in some cases
Modifications:
- added MediumUtil class to DotNetty.Common that provides ToMediumInt and ToUnsignedMediumInt
- added GetMedium, GetUnsignedMedium, SetMedium, ReadMedium, ReadUnsignedMedium, WriteUnsignedMedium, WriteMedium to IByteBuffer and their implementation in various buffers
- added SwapMedium to ByteBufferUtil
Result:
- int24/uint24 support
Motivation:
It is a common task to manage various timeouts in networking code. Normal high precision timers usually trade performance for precision which is a flexible requirement with timeouts.
Modifications:
- added HashedWheelTimer
- moved RejectedExecutionException to Common.Concurrency
Result:
- users may choose to use HWT in their code to avoid contentions due to frequent timer management.
* First cut commit *unfinished
* Replace SNI handler with TlsHandler with certificate selected based on host name found in clientHello
* first cut tests for SniHandler
* test update
* Test update
* Supress further read when handler is replaced
* made the snitest more effective and IDN in hostname lower case as per netty impl
* More asserts to check whether snihandler gets replaces with tlshaldler in the pipeline
* assert server name is always found in clienthello as per the test setup
* Provided option to select default host name in case of error or client hello does not contail SNI extension, otherwise handshake fails in those cases
* More elaborate tests
* verbosity in test
* Fixed Read continues to get called after handler removed and removed the workaround in SniHandler
* relaced goto statement with flag for breaking outer for loop from within switch
* Update SniHandler.cs
* trigger CI build
* addressed review comments
* Fixed task continuation option
* addresses further review comments
* triggere build again with some more assert in test #221
* suppress read logic is still needed due to async "void"
* changing the map to (string -> Task<ServerTlsSettings)
* one more constructor overload
* extensive tls read/write test is not needed since that's already done in tlshandler test
* more readable target host validation in test to force retrigger confusing CI build
* retrigger
* addressed review comment "this generates 30 random data frames. pls replace with new [] { 1 }"
1. Microsoft.Extensions.Configuration from 1.1.0 to 1.1.1
2. Microsoft.Extensions.Logging from 1.1.0 to 1.1.1
3. Google.Protobuf from 3.1.0 to 3.2.0
4. Microsoft.NET.Test.Sdk from 15.0.0 preview to 15.0.0
5. XUnit to 2.2.0 release
6. Moq from alpha to 4.7.1
7. NBench from 0.3.4 to 1.0.0
Motivation:
If pool grows too fast OOM exception may happen.
Modifications:
- add limit on max memory capacity allocated per heap arena, after which allocations are unpooled.
- extra: log exceptions terminating executor loop
Result:
Users have option to limit size of buffer pool.
Motivation:
In proxy scenarios it is often important to avoid unnecessary switching between event loops while passing traffic from client and server and back.
Modifications:
- Added AffinitizedEventLoopGroup
- introduced IEventExecutor.Parent and IEventLoop.Parent
- better xml-docs for executors and event loops.
- extra: turned off xml-doc warning
Result:
Proxy scenario is better supported out of the box.
Motivation:
DotNetty is already working under .NET Core and full .NET Framework but support for other platforms (like UWP) is missing. It is important to have reach in that space as well.
Modifications:
- Thread-based functionality is modeled with Tasks (as threads are not part of supported .NET Standard 1.3).
- IPlatform / DefaultPlatform are added to abstract platform-dependent functionality not available across the board.
- UWP platform implementation is demonstrated in an example along StreamSocket-based Channel.
Result:
UWP support for DotNetty is easy to implement now. Basics for platform-dependent code are added making further development easier.