26 Commits
Author SHA1 Message Date
Andrey Ilnitsky f754c83069 [0.7.3] Target net5 and net6 (#588)
* [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
2022-08-02 16:37:48 -07:00
Johnny Z 2c0c10939e WebSocket support. (#400) 2018-08-13 10:58:52 -07:00
Johnny Z f227f95966 HTTP 1.1 codec #52 (#256) 2018-04-11 09:31:39 -07:00
Johnny Z 4ddb22088a Libuv tests. (#332) 2018-01-19 11:11:02 -08:00
Johnny Z 131db28613 Libuv based tcp transport. (#270) 2017-10-02 16:10:14 -07:00
Johnny Z 6b86b1b883 Re align with Netty buffers. (#287) 2017-09-15 11:32:11 -07:00
Johnny Z c79a974400 Changed unit test projects to NET452 required by xunit 2.2.0 (#229) 2017-04-05 10:16:33 -07:00
Johnny Z 107a1c87b1 Follow up .NET tooling to upgraded packages to latest stable version
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
2017-03-21 15:03:36 -07:00
Max Gortman 52d1bf34d1 Migrating to new .Net Core RC tooling (#192) 2017-02-09 02:30:48 -08:00
Artur Laksberg 4dab326ce1 Abstract platform-specific parts & demo UWP support (#183)
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.
2017-01-19 12:58:01 -08:00
Johnny Z 44885964bd Socket-based UDP channel transport (#79). (#171)
Motivation:
Ported/Re-implemented DatagramChannel/UDP into DotNetty

Modifications:
- Added DatagramChannel/Config into transport project.
- Added DatagramPacket/DefaultAddressedEnvelop/IAddressedEnvelop into transport project.
- Added DatagramPacketEncoder/DatagramPacketDecoder into Codec project.
- Extra: Ported QuoteOfTheMoment UDP example project.

Result:
DatagramChannel/UDP transport is supported by DotNetty.
2016-11-23 15:45:02 -08:00
Johnny Z 6d1a58df8e Initial Protobuf 2/3 Codec Implementation ( #118) (#163)
Motivation:
Ported/Re-implemented Protobuf codec support into DotNetty

Modifications:
- Added Protobuf 2/3 Codec project
- Added Protobuf 2/3 Codec unit test project.
- Extra: Ported MessageToByteEncoder to DotNetty.Codec.

Result:
Protobuf 2/3 codec supported by DotNetty.
2016-11-16 14:00:06 -08:00
Max Gortman 4f28a55b48 Move to .NET Core tooling (#170)
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+.
2016-11-07 17:50:24 -08:00
Johnny Z 6fc89419c8 Initial Redis Codec Implementation (#161)
Motivation:
Added/Ported Redis codec support into DotNetty

Modifications:
- Added Redis Codec project
- Added Redis Codec unit test project.
- Extra: Added DefaultByteBufferHolder to DotNetty.Buffers.
- Extra: Added UnrealeasableByteBuffer to DotNetty.Buffers.

Result:
Redis codec supported by DotNetty.
2016-10-10 09:57:57 -07:00
egmkang wang a9850b4775 sample:discard,factorial,securechat,telnet (#142)
Squashed commit:

[7fbc42e] comment about BigInteger.ToByteArray()

[3be0644] delete ChannelInboundHander and ChannelInboudnHandlerAdpter

[b07f8d9] fix Microsoft.Practices compile error, use echo proj's version

[c19a551] sample:discard,factorial,securechat,telnet
2016-07-25 10:17:54 -07:00
Max Gortman f31c02e346 Fixes TlsHandler from operation, perf and compat POVs.
Motivation:
TlsHandler
Fix TlsHandler, optimize encryption / decryption wrt Write vs Flush semantics, optimize memory retention for sparse communication, adopt IByteBuffer.GetIoBuffers() in TlsHandler.

Modifications:
- TlsHandler is rewritten to use batch->copy->write approach instead of writing directly to SslStream in order to reduce overhead of framing / writing out everything separately.
- TlsHandler uses IByteBuffer.GetIoBuffers intead of direct array access increasing compatibility for non-array-backed buffers.
- TlsHandler and TlsHandler.MediationStream use Task semantics now when reading through SslStream.
- Extra: upgraded to NBench 2.2, xUnit 2.1.0.
- Extra: better portability for .NET Core support.

Result:
TlsHandler provides better framing and much better (x2+) performance (depends on application control of flushing).
TlsHandler operates properly in edge cases when more than one frame is accepted at once and if decrypted frame size is more than 4 KB.
TlsHandler holds only 256 byte buffer while waiting for more data to arrive off the wire.
Extra: DotNetty is almost .NET Core compatible.
2016-06-01 14:09:14 -07:00
mgortman cef1295c3c PooledByteBufferAllocator port, Byte Buffers improvements
Motivation:
Existing rudimentary buffer pool implementation is not flexible to efficiently support scenarios with high variety in message sizes.

Modifications:
- implemented PooledByteBufferAllocator (port of PooledByteBufAllocator) and related artifacts
- made IByteBuffer implement IEquatable<IByteBuffer>, IComparable<IByteBuffer>, implemented Equals, GetHashCode.
- ported test suite for Byte Buffers and fixed discovered issues.
- added suppression of ExecutionContext flow on async read / write on socket-based channels.
- removed old pooled Byte Buffer allocator implementation.

Result:
Support for buffer pooling for larger byte sequences, more efficient usage of memory dedicated for the pool.
2016-05-05 17:40:07 -07:00
Aaron Stannard 31864c6db0 added NBench support + End2End performance spec for TCP 2016-05-01 10:06:10 -07:00
mgortman 13863df29d Better signed build automation
Motivation
Since signed assemblies became part of the release they slowed down release cycle due to extended effort necessary to prepare nuget packages with signed assemblies.

Modifications
- introduced "Signed" solution configuration
- optional Test Friends (turned off in Signed)
- re-signing support in build script

Result
New releases can be produced quicker with less effort.
2016-04-08 02:52:18 -07:00
mgortman 8b59715deb Improved perf of SingleThreadEventExecutor
Motivation:
Impove performance of execution model

Modifications:
- switched SemaphoreSlim for ManualResetEventSlim to track empty vs non-empty states for executor's queue

extras
- removing wait for event loop shutdown (reduces test run time)
- adding benchmarking
- extracted common test utilities into Tests.Common project
- fixing ReSharper settings for ReSharper 10

Results:
5x improvement on in-loop scheduling, 2x improvement on out-of-liio scheduling:
STEE in loop (new)
        624ms   1,406,159Kc (G0= 114, G1=   0, G2=   0)
STEE in loop (old)
      2,719ms   6,205,423Kc (G0= 114, G1=   0, G2=   0)
STEE out of loop (new)
      1,464ms   6,559,838Kc (G0=  95, G1=   0, G2=   0)
STEE out of loop (old)
      3,869ms  12,331,986Kc (G0=  38, G1=  28, G2=   3)
2015-11-09 04:30:42 -08:00
Aaron Stannard 2f3cef46d7 implemented embedded channel close #3
brought AbstractContextHandler up to code
EmbeddedChannelTest passes
fixed LengthFieldBasedFrameDecoder
finished LengthFieldPrepender
finished SwappedByteBuffer
2015-11-05 09:39:21 -08:00
Bartosz Sypytkowski 6e1733a5b1 Echo client-server example
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.
2015-10-15 18:01:22 +02:00
Aaron Stannard 9cf6903b2a Created FAKE script for DotNetty
added a reference to .\src\SharedAssemblyInfo.cs in all release-able projects
added DotNetty nuspec files for each package
fixed XUnit test script
2015-08-12 22:08:54 -07:00
mgortman 7df35516d7 MQTT: decoder rework + happy path tests
- currentPacket and remainingLength are passed through method parameters
- RequestReplay calls are based on buffer.ReadableBytes(remainingLength)
- streamlined states and method division to reflect actual packet parsing logic
2015-07-24 15:20:58 -07:00
Aaron Stannard 8d77b8a388 implemented LengthFieldBaseFrameDecoder
Implemented the following classes:
- LengthFieldBaseFrameDecoder
- TooLongFrameException
- CorruptedFrameException

Added the following projects:
- DotNetty.Codecs.Tests
2015-07-17 12:27:40 -07:00
mgortman b9336e0817 first commit 2015-07-16 01:41:06 -07:00