NIOExtras is a good place for code that is related to NIO but not core. It can also be used to incubate APIs for tasks that are possible with core-NIO but are cumbersome today.
What makes a good contribution to NIOExtras?
a protocol encoder/decoder pair (also called “codec”) that is often used but is small enough so it doesn’t need its own repository
a helper to achieve a task that is harder-than-necessary to achieve with core-NIO
Code Quality / Stability
All code will go through code review like in the other repositories related to the SwiftNIO project.
swift-nio-extras part of the SwiftNIO 2 family of repositories and depends on the following:
zlib and its development headers installed on the system. But don’t worry, you’ll find zlib on pretty much any UNIX system that can compile any sort of code.
To depend on swift-nio-extras, put the following in the dependencies of your Package.swift:
The most recent versions of SwiftNIO Extras support Swift 5.6 and newer. The minimum Swift version supported by SwiftNIO Extras releases are detailed below:
SwiftNIO Extras
Minimum Swift Version
1.0.0 ..< 1.10.0
5.0
1.10.0 ..< 1.11.0
5.2
1.11.0 ..< 1.14.0
5.4
1.14.0 ..< 1.19.1
5.5.2
1.19.0 ...
5.6
On the nio-extras-0.1 branch, you can find the swift-nio-extras version for the SwiftNIO 1 family. It requires Swift 4.1 or better.
Current Contents
QuiescingHelper: Helps to quiesce
a server by notifying user code when all previously open connections have closed.
LengthFieldBasedFrameDecoder Splits incoming ByteBuffers by a number of bytes specified in a fixed length header contained within the buffer.
LengthFieldPrepender Prepends the number of bytes to outgoing ByteBuffers as a fixed length header. Can be used in a codec pair with the LengthFieldBasedFrameDecoder.
NIOExtras
NIOExtras is a good place for code that is related to NIO but not core. It can also be used to incubate APIs for tasks that are possible with core-NIO but are cumbersome today.
What makes a good contribution to NIOExtras?
Code Quality / Stability
All code will go through code review like in the other repositories related to the SwiftNIO project.
swift-nio-extras
part of the SwiftNIO 2 family of repositories and depends on the following:swift-nio
, version 2.30.0 or better.zlib
and its development headers installed on the system. But don’t worry, you’ll findzlib
on pretty much any UNIX system that can compile any sort of code.To depend on
swift-nio-extras
, put the following in thedependencies
of yourPackage.swift
:Support for older Swift versions
The most recent versions of SwiftNIO Extras support Swift 5.6 and newer. The minimum Swift version supported by SwiftNIO Extras releases are detailed below:
1.0.0 ..< 1.10.0
1.10.0 ..< 1.11.0
1.11.0 ..< 1.14.0
1.14.0 ..< 1.19.1
1.19.0 ...
On the
nio-extras-0.1
branch, you can find theswift-nio-extras
version for the SwiftNIO 1 family. It requires Swift 4.1 or better.Current Contents
QuiescingHelper
: Helps to quiesce a server by notifying user code when all previously open connections have closed.LineBasedFrameDecoder
Splits incomingByteBuffer
s on line endings.FixedLengthFrameDecoder
Splits incomingByteBuffer
s by a fixed number of bytes.LengthFieldBasedFrameDecoder
Splits incomingByteBuffer
s by a number of bytes specified in a fixed length header contained within the buffer.LengthFieldPrepender
Prepends the number of bytes to outgoingByteBuffer
s as a fixed length header. Can be used in a codec pair with theLengthFieldBasedFrameDecoder
.RequestResponseHandler
Matches a request and a promise with the corresponding response.HTTPResponseCompressor
Compresses the body of every HTTP/1 response message.DebugInboundsEventHandler
Prints out all inbound events that travel through theChannelPipeline
.DebugOutboundsEventHandler
Prints out all outbound events that travel through theChannelPipeline
.WritePCAPHandler
AChannelHandler
that writes.pcap
containing the traffic of theChannelPipeline
that you can inspect with Wireshark/tcpdump.