Go to file
Norman Maurer 71f179e63b Change Thread to be internal as we not expose it to the user 2018-02-08 09:26:53 +01:00
Sources Change Thread to be internal as we not expose it to the user 2018-02-08 09:26:53 +01:00
Tests non-blocking file IO 2018-02-07 17:25:45 +00:00
docker Xenial and compose 2017-11-09 21:34:51 -08:00
sh-tests non-blocking file IO 2018-02-07 17:25:45 +00:00
.gitignore doc generation 2018-01-18 19:21:54 +00:00
CODE_OF_CONDUCT.md initial commit 2017-04-20 12:13:14 +01:00
CONTRIBUTING.md initial commit 2017-04-20 12:13:14 +01:00
CONTRIBUTORS.txt initial commit 2017-04-20 12:13:14 +01:00
LICENSE.txt initial commit 2017-04-20 12:13:14 +01:00
NOTICE.txt initial commit 2017-04-20 12:13:14 +01:00
Package.swift initial commit 2017-04-20 12:13:14 +01:00
README.md remote now unnecessary swiftw script 2018-02-07 17:31:39 +00:00
generate_docs.sh fix doc generation to include deleted files 2018-01-31 11:12:59 -08:00
generate_linux_tests.rb sort linux tests 2017-10-17 09:51:59 -07:00
sanity Improve sanity test 2017-11-08 17:26:12 +00:00

README.md

SwiftNIO (Non-blocking IO in Swift)

SwiftNIO is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

It's like Netty but in Swift.

Documentation

Compile, Test and Run

For both Linux and macOS

swift build
swift test
swift run NIOEchoServer

and from some other terminal

echo Hello SwiftNIO | nc localhost 9999

Alternative way using docker-compose

First cd docker and then:

  • docker-compose test

    Will create a base image with Swift 4.0 (if missing), compile SwiftNIO and run tests

  • docker-compose up echo

    Will create a base image, compile SwiftNIO, and run a sample NIOEchoServer on localhost:9999. Test it by echo Hello SwiftNIO | nc localhost 9999.

  • docker-compose up http

    Will create a base image, compile SwiftNIO, and run a sample NIOHTTP1Server on localhost:8888. Test it by curl http://localhost:8888

  • docker-compose run swift-nio /scripts/gen-cert.sh

    Will generate self-signed certificate for a TLS Server example.

  • docker-compose up tls

    Will create a base image, compile SwiftNIO, and run a sample NIOTLSServer on localhost:4433. It is an echo server that you can test using openssl s_client -crlf -connect localhost:4433.

Prerequisites for Linux (using Docker)

Creating a Docker Image for Linux

# create the docker image for linux (one time or when Dockerfile changes)
$ docker build . -f docker/Dockerfile --build-arg version=4.0 -t=nio

Using the Linux Docker Image

# use the docker image, bind mount the current dir with code
$ docker run -it -v `pwd`:/code -w /code swift-nio bash
# do your thing
$ swift build
$ swift test

Testing on Linux

to know which tests to run on linux, swift requires a special mapping file called LinuxMain.swift and explicit mapping of each test case into a static list of tests. this is a real pita, but we are here to help!

# generate linux tests
$ ruby generate_linux_tests.rb